使用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(任意连接上的端口号)发送数据包,发送不出来,一直显示发送失败
请教高手,如何解决这个问题,万分感谢。。。
此帖出自
小平头技术问答
或者说 我不知道作为TCP客户端接收数据的正常流程应该是怎么样的? 不知高手是否能指教下,万分感谢
[ 本帖最后由 shindoo 于 2011-1-13 17:13 编辑 ]
http://bbs.eeworld.com.cn/thread-222963-1-2.html
* 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的链接发数据来了,就会在这里反映出来。
一周热门 更多>