日期:2014-05-16  浏览次数:20608 次

linux下UDP socket通信问题
感觉好头疼啊,大家帮帮忙
最近做一个项目,一个client端,一个服务器端
client端向serve端发送数据请求,然后serve在把数据传过来
client端的程序也比较简单:
int main{
.......
......
gettimeofday()
sendto
......
}
void fun(){ //这个是单独开的线程来接受
whil(1){
.......
recvform()
gettimeofday()
........
}
情况就是说 sendto 与recvfrom之间的时间如果用软件监测端口的话就20ms左右的时间,但是
我在程序宏用gettimeofday取得时间差值居然有的在70ms,甚至有的在1s左右,这是为什么啊???
补充说明: ①每次sendto之前都之前gettimeofday一次
          ②recvform之后肯定接着就gettimeofday一次
          ③sendto的频率是20ms左右,就是client端20ms左右会向服务器端发一次请求
          ④我直接用一个软件去监视客户端的发送端口跟接受端口,直接能看出来时间差在20ms
           说明client从端口发送请求和从server端接受数据之间的时间在20ms左右(这个是不会错的)
          ⑤在程序中我sendto记一下时间,recvfrom之后(没做任何处理)记一下时间
大家帮帮忙,给我点思路吧

------解决方案--------------------
你这测试好像不能说明什么问题啊,一个是sendto
一个是recvform这个和网络,以及服务器处理都有关啊。