首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >UDP套接字C#.NET

问UDP套接字C#.NET
EN

Stack Overflow用户
提问于 2013-09-02 06:47:50
回答 2查看 3.8K关注 0票数 0

我在.NET;in中使用了udp socket,我编写了一个程序,通过udp socket将图片从图片盒发送给其他程序。

代码如下:

这是侦听器部分,套接字从端口8000接收图像

代码语言:javascript
复制
private void Listening()
        {
            IPEndPoint ipep = new IPEndPoint(IPAddress.Loopback, 8000);

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

            newsock.Bind(ipep);


            int recv;
            IPEndPoint sender1 = new IPEndPoint(IPAddress.Parse("192.168.1.1"), 6000);

            EndPoint Remote = (EndPoint)sender1;
            byte[] data = new byte[11230];


            recv = newsock.ReceiveFrom(data,ref Remote);

            MemoryStream x = new MemoryStream(data);

            Image y = Image.FromStream(x);

            pictureBox2.Image = y;

         }

这是socket发送图像代码的发送部分

代码语言:javascript
复制
private void Sending()
        {
            IPAddress host = IPAddress.Parse("127.0.0.1");
            IPEndPoint hostep = new IPEndPoint(host, 8000);
            Socket sock = new Socket(AddressFamily.InterNetwork, SocketType.Dgram,    ProtocolType.Udp);

            sock.Connect(hostep);


            MemoryStream ms = new MemoryStream();

            pictureBox1.Image.Save(ms, System.Drawing.Imaging.ImageFormat.Jpeg);

            sock.Send(ms.ToArray());

          }

这两个部分都在同一台PC上。

我的问题是,当它在“发送”部分调用"Send“函数时,它会产生异常,并显示以下消息:

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

耽误您时间,实在对不起

EN

回答 2

Stack Overflow用户

发布于 2013-09-02 07:19:10

我建议你不要采用目前的方法。你试图实现的目标并不是以一种健壮的方式实现的那么简单。我建议您查看一下优秀的zeromq库,它很好地封装了原始套接字api,并提供了许多用于发送和接收数据的特定模式。

对于您描述的问题,zeromq支持的“发布/订阅”模式可能非常适合。

Zeromq是一个跨平台的c库,但是有很好的CLR/.NET包装器可用于它。我强烈建议您阅读这篇文章,例如作为介绍:http://www.codeproject.com/Articles/488207/ZeroMQ-via-Csharp-Introduction

票数 1
EN

Stack Overflow用户

发布于 2013-09-02 06:55:37

错误消息非常简单:您超出了消息大小的限制。在UDP中,发送的是数据报,而不是字节流。在IPv4中,您不能发送超过65507字节(即64KiB,包括IPv4和UDP报头)的UDP数据报。

UDP适用于短消息的传输,但对于大数据量的传输,TCP更可取。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/18563693

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档