单片机LWIP协议中客户端无法连接到服务器问题
来源:网络收集 点击: 时间:2025-02-19找到main程序中的LwIP_Init函数,并右键搜索定义(Definition)

由于我用的路由器加DHCP服务,所以用crtl + f 查找“LWIP_DHCP”,找到如图所示的函数段。

再往下找到诸如“IPaddress = netif.ip_addr.addr;”语句的地方,这句话意思就是将分配好的IP赋值给IPaddress 变量,即表示 LwIP初始化完成,系统已经得到路由器DHCP分配到的IP地址,在后面即可添加客户端定义语句。我的客户端定义是写在“Ehome_init”函数中的。

在Ehome_init函数内,同时定义了服务器端与客户端,而且下载到硬件平台都初始化运行成功。
IP4_ADDR(Server_ipaddr,192,168,1,112);
为所要连接的服务器地址,即我的 PC地址。
tcp_bind(pcb_client, IP_ADDR_ANY, 8091);
为绑定客户端socket的端口,为测试方便我绑定了8091端口,其实不绑定也可。
tcp_connect(pcb_client, Server_ipaddr, EHOME_SERVER_PORT, Ehome_Client_Connected)
既为客户端连接到服务器函数,其中pcb_client为客户端socket,Server_ipaddr为服务器IP,EHOME_SERVER_PORT为所要连接的服务器端口号,这里为8090(可以直接写数字“8090”),Ehome_Client_Connected为连接成功后调取的函数。

在电脑上用TCPUDP测试工具建立TCP服务器端,端口为8090(单片机程序中设定所要连接到的服务器端口号),然后启动服务器。

将前面写好的程序编译连接并下载到单片机内运行,可以看到服务器端自动接受到单片机客户端的连接,并成功接受到信息。

版权声明:
1、本文系转载,版权归原作者所有,旨在传递信息,不代表看本站的观点和立场。
2、本站仅提供信息发布平台,不承担相关法律责任。
3、若侵犯您的版权或隐私,请联系本站管理员删除。
4、文章链接:http://www.1haoku.cn/art_1241398.html