C#UDP协议图像发送

C#UDP协议图像发送,c#,sockets,udp,C#,Sockets,Udp,我只是尝试使用Udp协议发送屏幕截图,代码如下: private void Form1_Load(object sender, EventArgs e) { Socket s = new Socket(AddressFamily.InterNetwork, SocketType.Dgram, ProtocolType.Udp); IPAddress broadcast = IPAddress.Parse("10.0.0.4&

我只是尝试使用Udp协议发送屏幕截图,代码如下:

  private void Form1_Load(object sender, EventArgs e)
    {

        Socket s = new Socket(AddressFamily.InterNetwork, SocketType.Dgram,
       ProtocolType.Udp);

        IPAddress broadcast = IPAddress.Parse("10.0.0.4");

        Bitmap bitmap=GetDesktopImage();//generate screenshot.
        byte[] sendbuf = imageToByteArray(bitmap);
        IPEndPoint ep = new IPEndPoint(broadcast, 10);

        s.SendTo(sendbuf, ep);

        Console.WriteLine("Message sent to the broadcast address");

    }
ImageToByteArray是一个函数,它将图像转换为可以看到的字节数组

但是,当执行带有以下错误详细信息的
s.SendTo()
行时,我收到一个奇怪的异常:

在数据报套接字上发送的消息大于内部消息缓冲区或某些其他网络限制,或者用于接收数据报的缓冲区小于数据报本身

我不确定,但我认为这与发送的数据的大小有关。。
有什么帮助吗?

这条信息对我来说很清楚;UDP是一种比TCP简单得多的协议,而且您在单个数据包中发送的数据太多。。。你需要将数据切割成碎片(并重新组装,假设接收者得到所有数据)@marcGravel我如何才能切割包含整个图像的字节数组?我需要把它合并到另一边吗?可能是重复的是的,把你的阵列分成更小的部分。试着一次发送1024或2048个字节(每个数据包),然后在接收端重新组装它们,看看是否可以这样工作;UDP是一种比TCP简单得多的协议,而且您在单个数据包中发送的数据太多。。。你需要将数据切割成碎片(并重新组装,假设接收者得到所有数据)@marcGravel我如何才能切割包含整个图像的字节数组?我需要把它合并到另一边吗?可能是重复的是的,把你的阵列分成更小的部分。尝试一次发送1024或2048个字节(每个数据包),然后在接收端重新组装它们,看看是否可以这样工作。