Microchip
直播中

李冬茗

7年用户 183经验值
私信 关注
[问答]

UDP客户端不能接收该怎么办?

大家好,我在UDP发送和接收上工作,我可以打开一个套接字并发送远程主机可以接收的数据包。但是当远程主机发送包时,我的UDP客户端不能接收。UDP是准备工作不适合我。在UDP客户端.........案例pt_eth_state_init代码段:{ tcpipstat = tcpip_stack_status(sysobj。TCPIP);如果(tcpipstat & lt;0){ //一些错误sys_console_message(“应用:TCP/IP协议栈的初始化失败!rn”);pt_appdata.state = pt_app_state_service_tasks;} else if(tcpipstat = = sys_status_ready){ //现在栈准备我们可以检查/可用的接口nnets = tcpip_stack_numberofnetworksget();为(i = 0;我& lt;nnets;i++){ Neth = tcpip_stack_indextonet(我)网络名= tcpip_stack;_netnameget(荷兰);netbiosname = tcpip_stack_netbiosname(荷兰);#如果定义(tcpip_stack_use_nbns)sys_console_print(“%s %s的接口在主机-域名启用rn”,网络名,netbiosname);#别的sys_console_print(“%s %s的接口在主机-域名禁用rn”,网络名,netbiosname);# endif //定义(TCpip_stack_use_nbns)} pt_appdata.state = pt_eth_socket;}打破;}案例pt_eth_socket:{地址值= 0x7a01a8c0;udp_socket = tcpip_udp_clientopen(ip_address_type_ipv4,端口,(ip_multi_address *)&;addr);如果(udp_socket = = invalid_socket){ sys_console_message(“无法启动连接rn”);PTyAppDATA状态= PTYEthPixPixTest.Track;SysSCONSORE消息(“开始连接rn”);如果(!)tcpip_udp_isconnected(udp_socket)){ sys_console_message(“UDP没有连接rn”);pt_appdata.state = pt_eth_ping_test;break;}如果(tcpip_udp_putisready(udp_socket)= = 0){ sys_console_message(“UDP把没有准备好rn”);pt_appdata.state = pt_eth_ping_test;break;} tcpip_udp_arrayput(udp_socket,(uint8_t *)udp_buf,4);uint16_t ret = tcpip_udp_flush(udp_socket);sys_console_print(“UDP冲洗ret = %d rn”,RET);超时= sys_tmr_systemcountget() + sys_tmr_systemcountfrequencyget();pt_appdata.state = pt_eth_tcpip_wait_for_response;break;}案例pt_eth_tcpip_wait_for_response:{ char埠提供[ 180 ];memset(缓冲区,0,sizeof(缓冲区));/*如果(sys_tmr_systemcountget() >;超时){ sys_console_message(“R ntimout等待响应rn”);tcpip_udp_close(udp_socket);pt_appdata.state = pt_eth_ping_test;break;} * /如果(!tcpip_udp_isconnected(udp_socket)){ sys_console_message(“R nconnection封闭rn”);pt_appdata.state = pt_eth_ping_test;break;} /*论文部分不进入* /如果(tcpip_udp_getisready(udp_socket)){ tcpip_udp_arrayget(udp_socket,(uint8_t *)缓冲,sizeof(缓冲区)- 1);tcpip_udp_discaRD(udp_socket);sys_console_print(“缓冲区:%s rn”,缓冲);tcpip_udp_close(udp_socket);pt_appdata.state = pt_eth_ping_test;} drv_usart0_writebyte(A);

回帖(2)

云达贞

2019-8-2 13:54:14
我看不出您的代码有什么明显的问题-您使用什么端口来为客户机套接字使用?你在PC端使用什么客户机?有可能得到WiReSARK日志吗?
举报

方春晓

2019-8-2 14:12:14
你好,我面临着同样的问题,我有相同的代码,你可以找到任何解决方案,我怀疑端口或IP地址的选择,对于我的情况,我未能使服务器接收客户端已经发送的。我在客户端和服务器端都使用相同的端口,并且我使用打开套接字客户端的IP地址:192.168.100.55,称为远程地址;对于服务器套接字:192.168.100.101(本地地址),我丢失了什么吗?谢谢你的帮助
举报

更多回帖

发帖
×
20
完善资料,
赚取积分