【问题标题】:Problems with UDP socketUDP 套接字的问题
【发布时间】:2012-03-26 15:26:56
【问题描述】:

我遇到了一个奇怪的 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;
                }
           ...
}

问题是:当我第一次从服务器发送到客户端时,一切正常,但是当我第二次(等等)发送时 - 客户端什么也没收到。该问题的原因可能是什么?我该如何解决?

非常感谢。

【问题讨论】:

    标签: c# .net sockets udp udpclient


    【解决方案1】:

    循环中好像收不到数据,试试下面的方法:

    do 
    {
    
      bytes = s.Receive(bytesReceived, bytesReceived.Length, 0);
    
      page = page + Encoding.ASCII.GetString(bytesReceived, 0, bytes);
    
    } while (bytes > 0);
    

    【讨论】:

      猜你喜欢
      • 2011-01-03
      • 1970-01-01
      • 1970-01-01
      • 2019-09-21
      • 2021-03-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多