12604|10

10

帖子

0

TA的资源

一粒金砂(初级)

楼主
 

LMSS6432使用Lwip作为TCP客户端如何接收数据? [复制链接]

使用lwip的RAW的模式:
void TCP_Client_Init()
{
  struct tcp_pcb *Clipcb;
  struct ip_addr ipaddr;

  IP4_ADDR(&ipaddr,192,168,1,16);

  Clipcb = tcp_new();                       // 建立通信的TCP控制块(Clipcb)

  tcp_bind(Clipcb,IP_ADDR_ANY,8080);       // 绑定本地IP地址和端口号

  tcp_connect(Clipcb,&ipaddr,8080,TcpCli_Connected);
}

然后在回调函数TcpCli_Connected中,调用tcp_write发送数据------这一步没有问题。

但是作为TCP客户端如何侦听来至服务器的数据?

我尝试了在回调函数TcpCli_Connected中,调用函数
pcb = tcp_listen(pcb);                       /* 进入监听状态 */
tcp_accept(pcb,TcpCli_Accepted);

实际的调试中发现,网络连接后以后,使用上位机网络调试助手对192.168.1.25(单板的IP地址):8080(任意连接上的端口号)发送数据包,发送不出来,一直显示发送失败

请教高手,如何解决这个问题,万分感谢。。。

最新回复

不懂!!!!!!!!!!!  详情 回复 发表于 2013-11-5 09:33
 
点赞 关注

回复
举报

918

帖子

0

TA的资源

纯净的硅(中级)

沙发
 

回复 楼主 shindoo 的帖子

你应该在tcp_recv()中来指定你的TcpCli_Accepted试试。

点评

应该是在connect 中来直接调用 tcp_recv()吧?  详情 回复 发表于 2012-6-21 08:55
 
 

回复

10

帖子

0

TA的资源

一粒金砂(初级)

板凳
 

回复 沙发 academic 的帖子

谢谢高手! 我在TcpCli_Accepted 这个回调函数中有调用tcp_recv( )。。 我觉得问题是我不知道为什么已经建立了连接,上位机的网络调试助手(作为服务器) 无法发送数据。。

或者说 我不知道作为TCP客户端接收数据的正常流程应该是怎么样的? 不知高手是否能指教下,万分感谢
[ 本帖最后由 shindoo 于 2011-1-13 17:13 编辑 ]
 
 
 

回复

918

帖子

0

TA的资源

纯净的硅(中级)

4
 

回复 板凳 shindoo 的帖子

作为客户端就不要调用tcp_listen了,服务器端无法发送数据是个什么样的情形呢?建议看一下
https://bbs.eeworld.com.cn/thread-222963-1-2.html
 
 
 

回复

2641

帖子

0

TA的资源

五彩晶圆(中级)

5
 
楼上已经回答了我就飘过
 
 
 

回复

3

帖子

2

TA的资源

一粒金砂(初级)

6
 
UDP和TCP不一样,发送没问题和接收无关的。
 
 
 

回复

2

帖子

0

TA的资源

一粒金砂(中级)

7
 
/**
* Default receive callback that is called if the user didn't register
* a recv callback for the pcb.
*/
static err_t
tcp_recv_null(void *arg, struct tcp_pcb *pcb, struct pbuf *p, err_t err)


tcp.c中的这个函数,可以帮你解决这个问题。服务器用client的链接发数据来了,就会在这里反映出来。
 
 
 

回复

65

帖子

0

TA的资源

一粒金砂(高级)

8
 

回复 沙发 academic 的帖子

应该是在connect 中来直接调用 tcp_recv()吧?
 
 
 

回复

20

帖子

0

TA的资源

一粒金砂(中级)

9
 
客户端使用LwIP时,
1.与服务端建立链接   tcp_connect(pcb,client_connect( ) );
2.在tcp_connect( )的回调函数client_connect( )中调用tcp_recv( );
3.在tcp_recv( )中定义接收到Server发送数据的回调函数client_recvdata( );
4.在client_recvdata( )中处理Server发过来的数据
基本流程是这样
 
 
 

回复

2

帖子

0

TA的资源

一粒金砂(中级)

10
 
那麼請問如果想用GET指令發送指令到服務器上怎麼做?
還有我怎麼可以訪問特定頁面?
 
 
 

回复

1

帖子

0

TA的资源

一粒金砂(初级)

11
 

不懂!!!!!!!!!!!

不懂!!!!!!!!!!!
 
 
 

回复
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/8 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表