- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
Socket编程 目录 5.异步Socket 4.无连接的套接字 3.面向连接的套接字 2.套接字 1.网络基础知识 网络基础知识 在网络中计算机之间如何互相找到? IP地址与端口 TCP/IP(传输控制协议/网际协议)是一组网络通信协议的总称,它规范了网络上的所有通信设备,尤其是一个主机与另一个主机之间的数据交换格式以及传送方式 IP(Internet Protocol)是Internet网络设备之间传输数据的一种协议 IP地址就是给每个连接在因特网上的主机(或路由器)分配一个在全世界范围内惟一的标识符。 端口(Port)标识某台计算机上的进程。 网络基础知识 TCP(传输控制协议)是TCP/IP体系中面向连接的运输层协议,在网络中提供全双工的和可靠的服务。 TCP协议最主要的特点是: 1) 是一种基于连接的协议。 2) 保证数据准确到达。 3) 保证各数据到达的顺序与数据发出的顺序相同。 UDP是一个简单的、面向数据报的无连接协议,提供了快速但不一定可靠的传输服务。 UDP协议最主要的特点是: 1) 是基于无连接的协议,没有生成连接的系统延迟,所以速度比TCP更快。 2) 支持一对一连接,也支持一对多连接,可以使用广播的方式多地址发送。 3)与TCP的报头比是8:20,这使得UDP消耗的网络带宽更少 4) 协议传输的数据有消息边界,而TCP协议没有消息边界。 网络基础知识 套接字(Socket) 套接字是支持TCP/IP协议的网络通信的基本操作单元。可以将套接字看作不同主机间的进程进行双向通信的端点,它构成了单个主机内及整个网络间的编程界面。 System.Net.Sockets类 Socket类的构造实例: Socket localSocket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp); 面向连接的套接字 面向连接的套接字中,使用TCP协议来建立两个IP地址端点之间的会话。一旦建立了这种连接,就可以在设备之间可靠的传输数据。为了建立面向连接的套接字,服务器和客户端必须分别进行编程。 建立Socket面向连接通信 建立一个套接字 绑定本机的IP和端口作为服务器端 Listen()方法来监听网络上是否有人给自己发东西 建立客户端套接字Connect服务器端。 服务端监听到客户端连接请求,使用accept来接收这个连接。 然后就可以利用Send/Receive来执行操作了。 无连接的套接字 UDP协议使用无连接的套接字,无连接的套接字不需要在网络设备之间发送连接信息。须用Bind方法绑定到一个本地地址/端口对上。完成绑定之后,该设备就可以利用套接字接收数据了。由于发送设备没有建立到接收设备地址的连接,所以收发数据均不需要Listen (), Connect()方法。 建立Socket无连接通信 建立一个套接字 绑定本机的IP和端口作为服务器端 UDP不需要Listen (),accept(), 直接使用SendTo()/ReceiveFrom()来执行操作。(和TCP的执行方法有区别,因为UDP不需要建立连接,所以在发送前并不知道对方的IP和端口,因此需要指定一个发送的目标位置才能进行正常的发送和接收) 异步Socket通信 所谓异步操作方式,就是我们希望让某个工作开始以后,能在这个工作尚未完成的时候继续处理其他工作。 比如:客户端服务器端随时可以接收信息与发送信息,不需要等待。 典型代码 定义服务器网络地址: IPEndPoint iep = new IPEndPoint(IPAddress.Parse(127.0.0.1), 1000); EndPoint ep = (EndPoint)iep; 典型代码 定义Socket: Socket socketServer = new Socket(AddressFamily.InterNetwork, SocketType.Dgram, ProtocolType.Udp); socketServer.Bind(ep); //(接收端)绑定地址 典型代码 接收数据: byte[] byteArray = new byte[1000]; int intLegth = 0; //接收长度 intLegth = socketServer.ReceiveFrom(byteArray, ref ep); string strConvesation = Encoding.Default.GetString(byteArray,
文档评论(0)