很奇怪的一个现象,今天突然接收udp包的时候出现-1的情况,错误为Invalid argument,在加上一个赋值后,问题解决。这个问题影响非常大,在系统中对udp的处理一直是这样进行的。下面的代码中加入红色行后问题解决。
void CRecevHandler::Run()
{
int len = sizeof(struct sockaddr_in);;
int remotesport=0;
unsigned int result=0;
struct sockaddr_in incomingconnect;
char buf[1000];
char destbuf[200];
while(1)
{
memset(buf,0,1000);
// memset(destbuf,0,200);
if((len=recvfrom(m_nSocket,buf,1000,0, (struct sockaddr*)&incomingconnect,(socklen_t*)&len))>0)
{
_log(_DEBUG, "CRecevHandler", "Recev New Message");
// if((result=Handler(buf,len,destbuf,&remotesport))==VXI_EVT_MMS_TERMINAL_QUERY_ECHO)
{
// SendResp(&incomingconnect,remotesport,destbuf,strlen(destbuf));
}
}
else
{
perror("\n recvfrom error!");
_log(_ERROR, "CRecevHandler", "Recev len = %d",len);
}
}
}