2010-08-21 3 views
0

클라이언트 UDP 응용 프로그램에 C# 프로그램을 사용합니다. 응용 프로그램은 연결을 수신 한 다음 통신합니다.UDP 변형 패킷

Socket udpClient = new Socket(AddressFamily.InterNetwork, SocketType.Dgram, ProtocolType.Udp); 
udpClient.Bind(new IPEndPoint(IPAddress.Any, ListenPort)); 
udpClient.Blocking = true; 
int count = 0; 

while (count == 0) udpClient.ReceiveFrom(receiveBuffer, ref ePoint); 
udpClient.SendTo(data, endPoint); 
udpClient.ReceiveFrom(receiveBuffer, ref ep); 
... 

저는 Wireshark를 사용하여 응용 프로그램을 디버깅합니다. 문제는 언젠가 내 응용 프로그램이 기형의 STUN 패킷을 보내기 시작한 것이고, 그 때문에 인터넷상의 라우터에 의해 거부 될 것이라고 생각합니다.

질문 : 잘못된 UDP/STUN 패킷을 보내지 못하게 할 수 있습니까?

답변

0

응용 프로그램이 잘못된 UDP 패킷을 보내면 버그가 있습니다. 코드의 최소 부분에는 SendTo 호출이 하나만 있습니다. 데이터의 내용/길이에 대한 점검 기능을 추가 할 수 있습니다.

BTW : UDP는 비 연결입니다. 내 말은, 응용 프로그램이 연결이 아닌 요청 또는 일종의 시작 명령을 기다리는 것입니다.

+0

적어도 내 편에서는 버그 인 것 같지 않습니다. 데이터가 올바르게 수신되고 UDP 패킷의 형식이 잘못되었지만 STUN 패킷이 아닙니다. – Bogi