簡體   English   中英

UDP套接字返回部分數據包

[英]UDP Socket returns part of packet

信息:我正在開發VOIP應用程序。

我使用C#套接字類並將其初始化為UDP套接字。

我的接收代碼:

if(socket.Poll(-1,SelectMode.SelectRead)){
    if(!socket.Connected){
        return;
    }
    Console.WriteLine(" AVAIL:"+socket.Available);
    int count = socket.ReceiveFrom (data, ref endpoint);
    Console.WriteLine("LENGTH:"+count);
    receivedEvent.Reuse (socket, data, count, (IPEndPoint)endpoint);
    receivedFunction (receivedEvent);
}

我的發送代碼:

int cnt = socket.SendTo (data, length, SocketFlags.None, ep);
if (cnt != length) {
   //LOG STUFF
}
if (sendEvent != null) {
    sendEvent (cnt);
}

錯誤:我從udp套接字中獲得了意外數據,這意味着我正在發送〜100字節的數據,但我只收到31。這是錯誤的=>我以為UDP總是會給我帶來全部或全部的收益。 我錯了嗎 ?

所以我的問題是,UDP是否在數據包意義上不可靠? 像我只應該獲取有效數據包還是不獲取數據包?

我似乎遇到的另一個問題(不確定是否已連接到當前問題嗎?),大約30分鍾后,我的套接字僅返回10作為從套接字讀取的數據計數。

所以我的問題是,UDP是否在數據包意義上不可靠? 像我只應該獲取有效數據包還是不獲取數據包?

否,除非您使用UDP校驗和,否則是否使用原始套接字?

錯誤:我從udp套接字中獲得了意外數據,這意味着我正在發送〜100字節的數據,但我只收到31。這是錯誤的=>我以為UDP總是會給我帶來全部或全部的收益。 我錯了嗎 ?

您是否停用了IP分段? https://msdn.microsoft.com/zh-cn/library/system.net.sockets.udpclient.dontfragment%28v=vs.110%29.aspx

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM