当前位置: 代码迷 >> 单片机 >> lwip 协议在cortexM3下的实现有关问题
  详细解决方案

lwip 协议在cortexM3下的实现有关问题

热度:253   发布时间:2016-04-28 15:47:48.0
lwip 协议在cortexM3上的实现问题。
想在周立功的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发送的内容了