第11章 UDP协议开发.ppt
上传人:qw****27 上传时间:2024-09-12 格式:PPT 页数:47 大小:158KB 金币:15 举报 版权申诉
预览加载中,请您耐心等待几秒...

第11章 UDP协议开发.ppt

第11章UDP协议开发.ppt

预览

免费试读已结束,剩余 37 页请下载文档后查看

15 金币

下载此文档

如果您无法下载资料,请参考说明:

1、部分资料下载需要金币,请确保您的账户上有足够的金币

2、已购买过的文档,再次下载不重复扣费

3、资料包下载后请先用软件解压,在使用对应软件打开

第十一章UDP协议开发11.1UDP协议概述SendTo()方法和ReceiveFrom()方法UDP无需建立连接,可在任何时候直接向网络中的任意主机发送UDP数据包。当然须指明目标地址,可以直接用SendTo()方法完成这个功能。将创建的套接字与本地IPEndPoint进行绑定后,也可以用ReceiveFrom()方法接收远程主机发来的数据。使用这种方法,发送和接收UDP数据包的一般步骤为:1)创建一个Socket对象。2)如果要接收UDP数据包,需要将创建的套接字与本地IPEndPoint进行绑定。如果仅仅为了发送,则不需要绑定。3)使用SendTo()方法和ReceiveFrom()方法发送和接收数据包。【例11-1】简单UDP套接字编程—使用SendTo和ReceiveFrom。usingSystem;usingSystem.Net;usingSystem.Net.Sockets;classTestSimpleUdp{publicstaticvoidMain(){intlength;byte[]bytes=newbyte[1024];Socketsocket=newSocket(AddressFamily.InterNetwork,SocketType.Dgram,ProtocolType.Udp);//参数1指定本机IP地址(此处指所有可用的IP地址),参数2指定接收用的端口IPEndPointmyHost=newIPEndPoint(IPAddress.Any,6789);//将本机IP地址和端口与套接字绑定,为接收做准备socket.Bind(myHost);//定义远程IP地址和端口(实际使用时应为远程主机IP地址),为发送数据做准备IPEndPointremote=newIPEndPoint(IPAddress.Parse("127.0.0.1"),6789);//从IPEndPoint得到EndPoint类型EndPointremoteHost=(EndPoint)remote;Console.Write("输入发送的信息:");stringstr=Console.ReadLine();//字符串转换为字节数组bytes=System.Text.Encoding.Unicode.GetBytes(str);//向远程终端发送信息socket.SendTo(bytes,bytes.Length,SocketFlags.None,remoteHost);while(true){Console.WriteLine("等待接收...");//从本地绑定的IP地址和端口接收远程终端的数据,返回接收的字节数length=socket.ReceiveFrom(bytes,refremoteHost);//字节数组转换为字符串str=System.Text.Encoding.Unicode.GetString(bytes,0,length);Console.WriteLine("接收到信息:{0}",str);//如果收到的消息是"bye",则跳出给循环if(str=="bye")break;Console.Write("输入回送信息(bye退出):");str=Console.ReadLine();bytes=System.Text.Encoding.Unicode.GetBytes(str);socket.SendTo(bytes,remoteHost);}//关闭套接字socket.Close();Console.WriteLine("对方已经byebye了,请按〈Enter〉键结束。");}}SendTo方法有下列几种重载的形式:publicintSendTo(byte[]data,EndPointremote)将数据发送到指定的终点。publicintSendTo(byte[]data,SocketFlagsflags,EndPointremote)使用指定的SocketFlags将数据发送到指定的终点。publicintSendTo(byte[]data,intsize,SocketFlagsflags,EndPointremote)使用指定的SocketFlags将指定字节数的数据发送到指定的终点。publicintSendTo(byte[]data,intoffset,intsize,SocketFlagsflags,EndPointremo