【问题标题】:UDP client bug - Unable to send data bytesUDP 客户端错误 - 无法发送数据字节
【发布时间】:2012-03-24 21:26:39
【问题描述】:

我正在编写一个 C# P2P 视频聊天(我的教师考试的一部分),我有点卡在通过 udp 发送数据。所以这里是如何工作的。我有一个 Web_Capture 库,每次捕获图像时,它都会将 PictureBox 图像设置为捕获的图像

 private void webCamCapture_ImageCaptured(object source, WebCam_Capture.WebcamEventArgs e)
        {
            myCamera.Image = e.WebCamImage;
            sendData(ref ipep2);   // send it immediately
        }

然后 sendData 方法开始发送...

private void sendData(ref IPEndPoint sender)
        {
            byte[] data;

            if (friendsClient == null)
            {
                friendsClient = new UdpClient();

            }

            MemoryStream myStream = new MemoryStream();
            myCamera.Image.Save(myStream, System.Drawing.Imaging.ImageFormat.Jpeg);
            data = myStream.GetBuffer();
            friendsClient.Send(data, data.Length,sender);

        }  

调试时,socket异常弹出:

 System.Net.Sockets.SocketException was unhandled by user code
  Message=The requested address is not valid in its context
  Source=System
  ErrorCode=10049
  NativeErrorCode=10049

所以,有没有人有任何想法,如果他用代码支持这个想法,我将不胜感激,因为我是 c# 的新手 :) 提前致谢。马里安

【问题讨论】:

  • ipep2的值是多少?

标签: c# udp client-server udpclient


【解决方案1】:

您应该指定接收者的 ip 和端口,Here is a complete example

所以你应该将你的实现更改为

private void sendData(ref IPEndPoint reciever)
{
  byte[] data;

  Socket sending_socket = new Socket(AddressFamily.InterNetwork, ocketType.Dgram, ProtocolType.Udp);

  MemoryStream myStream = new MemoryStream();
  myCamera.Image.Save(myStream, System.Drawing.Imaging.ImageFormat.Jpeg);
  data = myStream.GetBuffer();
  sending_socket.SendTo(data, reciever);
}

【讨论】:

  • 我做了一个 UDPListener 和 UDPPictureSender,效果很好,而且我减少了很多不必要的代码行!谢谢你,你救了我的晚上:)!万事如意
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-09-08
  • 1970-01-01
  • 2020-11-13
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多