对于UDP的一些心得

最近电信那个平台差不多要结束了。其中udp进行总结一下。很简单。

对于程序,你想接收UDP还是发送UDP都必须建立一个
System.Net.Sockets.UdpClient。

建立这个对象时需要配置其ip地址及其端口。 一般通过

System.Net.Sockets.UdpClient udpClient = new System.Net.Sockets.UdpClient(new System.Net.IPEndPoint(System.Net.IPAddress.Parse( " 127.0.0.1 " ),  9000 ))
实现。IPEndPoint是C#网络节点类,其包括IP地址与端口。

 

完了之后还需要配置收发缓存:(如果有数据溢出了缓存,结果,自己想)

            udpClient.Client.ReceiveBufferSize  =   2   *   1024   *   1024 ;
            udpClient.Client.SendBufferSize 
=   2   *   1024   *   1024 ;

 

完事了就开始进行收发了。

发送:
发送需要将数据装换为Byte[]类型(我不喜欢叫它数组,就像字符串我们从来不叫它数组一样),一般通过它实现

byte [] sendByte  =  System.Text.Encoding.Default.GetBytes(MSG_CONTENT);
下面就是把这些二进制位送到网线那头去。
 udpClient.Send(sendByte, sendByte.Length,  new  System.Net.IPEndPoint(System.Net.IPAddress.Parse( " 127.0.0.1 " ),  9001 ));
这里说明一下,由于我在本机上实现的收发,所以用2个端口模拟收发的2头,一个9000,一个是9001。
上面的话最后就是指向我要发送过去的地址。

 

接收:
接收更简单:

            IPEndPoint iPEndPoint  =   null ;
            
byte [] receive;
            receive 
=  udpClient.Receive( ref  iPEndPoint);
            
// 读取UDP端口内容
             string  receiver  =  System.Text.Encoding.Default.GetString(receive);
如果有人通过上面发送的方法给你发送了数据,你只要通过如上代码接收就OK了。 iPEndPoint 就是告诉程序,谁发给我的,发件人地址。Receive是否具有接收事件我不清楚,我通过线程不停的进行读取。顺便说一下,如果没有数据而执行了 Receive,那么当前的线程会被挂起,直到等到有人给这个端口发送了数据才会继续执行(知道我为啥要用线程了吧)。


最后记得在使用后关闭连接,() 

 udpClient.Close();
我一般把udp作为主窗体类的一个成员变量——属性,所以通常在主窗体类的close事件里执行此语句。呵呵。

 

转载于:https://www.cnblogs.com/edzjx/archive/2009/04/28/1445214.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值