在项目中用到udp进行数据传输,遇到过两个问题:
一、receive数据的阻塞
由于该接口是阻塞的,如果接受不到数据,会一直阻塞,这就导致程序不能继续往下执行。因此,在调用receive()接口前,先调用setSoTimeout()接口,设置一个超时时间,这样就不会因为读不到数据而阻塞住。
二、循环中发数据复用socket
由于一直使用相同的socket,导致接收到的数据出现偏移,这个问题一直不知道具体什么原因。但是,改用每次都重新new一个socket后,就不会出现相同的问题了。
在项目中用到udp进行数据传输,遇到过两个问题:
一、receive数据的阻塞
由于该接口是阻塞的,如果接受不到数据,会一直阻塞,这就导致程序不能继续往下执行。因此,在调用receive()接口前,先调用setSoTimeout()接口,设置一个超时时间,这样就不会因为读不到数据而阻塞住。
二、循环中发数据复用socket
由于一直使用相同的socket,导致接收到的数据出现偏移,这个问题一直不知道具体什么原因。但是,改用每次都重新new一个socket后,就不会出现相同的问题了。
转载于:https://www.cnblogs.com/luceion/p/5495395.html