求助,UDP通信接收延时问题
seuyx 2010-08-07 10:47:12 问题是这样的。现在要进行上下位机之间的通信,通信是通过UDP实现,上位机MFC界面中显示的更新周期是10ms,接收数据时间间隔是25ms。奇怪的事情发生了,接收到的数据感觉像是经过了一个慢镜头重放,比如下位机发送的指令是10秒内数据从0变到10,结果上位机收到的数据,在界面中显示的情况却是100秒钟才从0缓慢变到10.
请问造成这种现象的原因是什么?还有就是,运行一段时间后会报出TCP/IP堆栈耗尽的错误。
这是我上位机的部分代码
//声明
SOCKET netsocket;
struct sockaddr_in remotehost;//目的远程主机的地址信息
struct sockaddr_in recvhost; //接收时存放远程主机的地址信息
struct sockaddr_in localhost;//本地主机的地址信息
//初始化
WORD wVersionRequested;
WSADATA wsaData;
int err;
wVersionRequested = MAKEWORD(1, 1);
err = WSAStartup( wVersionRequested, &wsaData );
if((netsocket=socket(AF_INET,SOCK_DGRAM,0))<0)
{
RtPrintf("socket create error!");
ExitProcess(1);
}
localhost.sin_addr.s_addr=inet_addr("192.0.0.200");
localhost.sin_family=AF_INET;
localhost.sin_port=34567;//2006-03-17 change by 602
remotehost.sin_addr.s_addr=inet_addr("192.0.0.202");
remotehost.sin_family=AF_INET;
remotehost.sin_port=34567;//2006-03-17 change by 602
if((bind((SOCKET)netsocket,(const struct sockaddr*)&localhost,sizeof(localhost)))!=0)
{
RtPrintf("Socket bind error!");
ExitProcess(1);
}
//接收的程序
int addrsize=sizeof(recvhost);
if((recvfrom(netsocket,(char *)RecvData,36,0,(struct sockaddr *)&recvhost,&addrsize))<=0)
{
RtPrintf("Receive error");
}