2012-03-26 14 views
0

私はudpソケットに奇妙な問題があります。まず第一に、私はコードを提供してみましょう:UDPソケットの問題

サーバー側:

 UdpClient udpClient = new UdpClient(UdpPort); 

     udpClient.Connect(pendingClient.IpEndPoint, pendingClient.UdpPort); 

     foreach (int frameNumber in pendingClient.FramesToSend) 
     { 
      byte[] frameBytes = ... 
      udpClient.Send(frameBytes, frameBytes.Length); 
     } 
     udpClient.Close(); 

クライアント側:

using (Socket socket = new Socket(AddressFamily.InterNetwork, SocketType.Dgram, ProtocolType.Udp)) 
     { 
      socket.Bind(new IPEndPoint(IPAddress.Any, UdpPort)); 

      socket.SetSocketOption(SocketOptionLevel.Socket, SocketOptionName.ReceiveTimeout, 1000); 

      Console.WriteLine("Receiving frames"); 
      while (!_sendingCompleted) 
      { 
       byte[] receive = new byte[Constants.FrameSize + Frame.HeaderSizeBytes]; 
       try 
       { 
        socket.Receive(receive); 
       } 
       catch (SocketException exception) 
       { 
        if (exception.SocketErrorCode == SocketError.TimedOut) 
        { 
         break; 
        } 

        throw; 
       } 
      ... 
} 

問題がある:私は、サーバーからクライアントに初めてに送信しないときすべてが完璧に機能しますが、私がそれを2番目の時に行うと、クライアントは何も受け取りません。その問題の原因は何か、それをどうすれば解決できますか?

多くのありがとうございます。

答えて

0

次のアプローチを試し、サイクルでデータを受信して​​いないように見える:

do 
{ 

    bytes = s.Receive(bytesReceived, bytesReceived.Length, 0); 

    page = page + Encoding.ASCII.GetString(bytesReceived, 0, bytes); 

} while (bytes > 0);