想在周立功的8962上实现基于LWIP 的客户端,电脑是server , 电脑与板子通过网线连接,连接部分的代码如下:
- C/C++ code
void TCP_Client_Init(void){ struct tcp_pcb *Clipcb; struct ip_addr ipaddr; Clipcb = tcp_new(); runFlag = 1;//置标志位 IP4_ADDR(&ipaddr,202,194,26,112); //tcp_close(Clipcb); //IP4_ADDR(&ipaddr,IPAddress[0],IPAddress[1],IPAddress[2],IPAddress[3]); //tcp_bind(Clipcb,IP_ADDR_ANY,6003); tcp_bind(Clipcb,(struct ip_addr *)IPAddress,6003); tcp_connect(Clipcb,&ipaddr,1038,TcpCli_Connected);}
板子跟主机的IP在同一网段,单步调试的时候IP 端口都正常,但是程序运行到tcp_connect()函数内的LWIP_ERR0R()函数就返回,看了看API,返回的错误值是ERR_ISCONN(already connected) ,主机通过抓包工具看过,没有板子发来的包。请问这个问题怎么解决啊?还有,该程序上还有一个LED工作提示的中断部分,我现在用的是keil ,这个程序在IAR上运行的时候没有问题的,我把程序移植到KEIL中之后,LED工作部分正常,但就是到tcp_connect() 处返回ERROR, 是不是跟我移植有关系啊?那位大侠帮帮忙啊?
------解决方案--------------------
你这个流程不对,你是要发送数据么,client是:设置服务器(PC机)地址,创建套接字(socket),连接(conect),写buffer,就这几步就可以发出去了。bind是绑定地址端口,写server的时候,用bind把自己的板的地址绑定到server上。server:创建socket,设置服务器地址(本机地址),bind绑定地址,监听,接收。读buffer,就可以接收到client发送的内容了