2013-11-23 2 views
0

정보 : 나는 VoIP 응용 프로그램에서 일하고 있습니다.UDP 소켓 패킷의 일부를 반환합니다

메신저 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); 
} 

ERROR : 나는 ~ 보내는 메신저를 의미, 내 UDP 소켓에서 데이터하지만 100 바이트의 예기치 않은 데이터를 얻을 수 31. 어느 것이 틀린가 => 나는 UDP가 항상 나에게 아무것도주지 않을 것이라고 생각했다. 내가 잘못 ?

그럼 내 질문은 UDP가 패킷의 의미에서 신뢰할 수 없습니까? 마찬가지로 유효하거나없는 패킷 만 가져야합니까?

내가 갖고있는 것 같다 또 다른 문제는 (그것이 내 현재의 문제에 연결되어 있는지 확인하지 않을 경우?), 후 ~ 삼십분 내 소켓은 소켓에서 읽을 데이터의 개수로 (10)를 반환합니다. 당신은 UDP 체크섬을 사용하지 아니하지 않는 한

+0

오류가 무엇입니까 –

+0

@ShahroozJefri ㇱ가 더 좋습니까? – Michiluki

+0

오류를 넣으십시오. –

답변

0

So my question is, shouldn't UDP be reliable in sense of packets ? Like I only should get valid or none packets ?

, 당신은 원시 소켓을 사용합니까?

ERROR: I get unexpected data from my udp socket, meaning im sending ~100 bytes of data but I only receive 31. Which is just wrong => I thought UDP will always give me all or nothing. Am I wrong ?

IP 조각화를 비활성화 했습니까? https://msdn.microsoft.com/en-us/library/system.net.sockets.udpclient.dontfragment%28v=vs.110%29.aspx