我是向兩個不同的機器發(fā)送相同的UDP包,代碼如下for (i=0; i<Num; i++)::sendto(RemoteNode[i].hSocket,(char*) pSendBuf,ulSendLength,0,(struct sockaddr*) &RemoteNode[i].stLclAddr,sizeof(RemoteNode[i].stLclAddr));但是發(fā)送幾萬幀以后發(fā)現(xiàn),有幾幀數(shù)據(jù)第一個目的機器沒有發(fā)送出去,而第二個目的機器卻發(fā)送出去了。是因為兩個sendto語句之間間隔太短嗎?那為什么只有偶爾幾幀才出現(xiàn)這種情況?還有,進行相同試驗時,發(fā)現(xiàn)未發(fā)送出去的幀基本是同一幀,這一幀與上一幀的發(fā)送間隔通常較大,100多秒以上,而相差幾百毫秒的幀卻兩個機器都能收到,難道UDP也有斷開連接這一說?
2 回答

森欄
TA貢獻1810條經(jīng)驗 獲得超5個贊
這個源碼有個錯誤,是這個地方 char *buff[256];是256個指針,每個指針大小為4個字節(jié),并且指向位置不確定,buff就是指向指針的指針,而不是指向空間的。應(yīng)該為char buff[256];是256個字符空間 buff就是空間的首地址,也就指針,如果不改的話Receive( buff,256);就出錯了。
=(struct MEG*)buff;
就是強制類型轉(zhuǎn)換,將MEG指針 指向了 buff位置,利用MEG結(jié)構(gòu)分組buff指向的內(nèi)容。雖然buff是256但MEG大小之外的通過MEG指針訪問不到。
添加回答
舉報
0/150
提交
取消