sledd 发表于 2011-9-30 18:06:34

udpserv如何发送数据

请教大家,我试着用rt_thread做server,与网络中的client进行udp方式通讯,采用udpserv例程,能够实现数据的接收和发送,现在遇到一个问题,就是发送数据只能在接收到数据后进行,如果希望发送数据后在一定时间内收不到回应的话,重新发送刚才的数据,该如何实现?我加了一个定时器,发送完数据后启动该定时器,然后根据标志位状态采用定时器回调函数来发送数据,可无法实现。总出现错误。请问该如何实现呢?

first_blood 发表于 2011-9-30 18:47:12

上代码,错误是什么

sledd 发表于 2011-10-6 13:11:58

我知道问题所在了,是因为UDPSERV线程在没有数据接收时被挂起,所以在收不到数据时该线程的发送数据也不会实现,可是还是找不头绪解决,可否用定时器回调函数重新执行该线程呢,头都大了,还是自己对这个系统没有充分理解。

337zhang 发表于 2012-2-29 10:32:55

楼主现在解决了吗?我现在也是只能在接收到udp数据后才能发送,一重新上电就不行了

fengzi2003 发表于 2012-2-29 18:18:32

lwip udp接收可以设置超时的,如下

conn = netconn_new(NETCONN_UDP);
conn->recv_timeout = 100; //设定接收超时100ms,单位为ms
netconn_bind(conn, IP_ADDR_ANY , rport);

lwip1.3直接设置recv_timeout 成员变量
lwip1.4有一个设置超时的函数,可以自己查查文档
页: [1]
查看完整版本: udpserv如何发送数据