- 1、本文档共6页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
第十六讲 Stoket编程精选
第十六讲 Stocket编程
Stocket套接字
提供对网络通信的基本操作,常用的类型有两种:
流式套接字
提供连接的、可靠的、数据无错并且无重复的数据发送服务,发送的数据按顺序接收。无长度限制线路占用率高。TCP协议使用这种接口。如网页浏览、下载文件。
数据报式套接字
提供面向无连接的服务,以独立的数据包形式发送数据,不提供正确性检查,不保证各数据包的发送顺序,可能出现数据的重发、丢失等现象。接收的顺序由路由决定,线路占用率低,数据包长度不能大于32KB.UDP协议使用这种接口,如QQ。
面向连接就像打电话,一直占线,先发先至。面向无连接就像寄信,只管收发,什么时候到由邮局定。与这个比方不同的是面向连接的方式为了保证安全可靠,速度不如无连接方式。
首先我们解释一下在网络编程时候,经常遇到的几个概念:同步(synchronous)、异步(asynchronous)、阻塞(Block)和非阻塞(Unblock):
所谓异步方式,就是发送方发送数据包以后,不等接受方响应,就接着发送下一个数据包。
同步方式就是当发送方发送一个数据包以后,一直等到接受方响应后,才接着发送下一个数据包。
阻塞套接字是指执行此套接字的网络调用时,直到调用成功才返回,否则此套节字就一直阻塞在网络调用上,比如调用StreamReader 类的Readlin ( 方法读取网络缓冲区中的数据,如果调用的时候没有数据到达,那么此Readlin ( 方法将一直挂在调用上,直到读到一些数据,此函数调用才返回;
非阻塞套接字是指在执行此套接字的网络调用时,不管是否执行成功,都立即返回。同样调用StreamReader 类的Readlin ( 方法读取网络缓冲区中数据,不管是否读到数据都立即返回,而不会一直挂在此函数调用上。
在Windows网络通信软件开发中,最为常用的方法就是异步非阻塞套接字。平常所说的C/S(客户端/服务器)结构的软件采用的方式就是异步非阻塞模式的。
网络通信地址
网络通信地址用对象IPEndPoint来表示,IPEndPoint类的成员有两个:
Address属性:IP地址,不同的主机IP地址不同。
Port属性:端口号,同一主机的不同线程可通过不同的端口号,完成不同的通信处理。
通过IPHostEntry类,将一个域名(主机名)与一组IP地址关联。它有两个属性:
AddressList属性:以一个IPAdress数组的形式存放了与域名相关联的IP地址列表。
HostName属性:即域名。
通过Dns类,向TCP/IP协议的应用程序提供域名服务。常用的静态方法有三个:
GetHostName:返回主机名称。
GetHostByName:获取由参数指定的主机名的DNS信息,返回IPHostEntry类型的对象。
Resolve:域名解析,将由参数指定的域名转换为IP地址,返回IPHostEntry类型的对象。
常用的属性和方法
属性 说明
AddressFamily 获取Socket的地址族。
*Available 获取已经从网络接收且可供读取的数据量。
*Blocking 获取或设置一个值,该值指示Socket是否处于阻塞模式。
*Connected 获取一个值,该值指示Socket是否已连接到远程资源。
Handle 获取Socket的操作系统句柄。
*LocalEndPoint 获取本地终结点。
ProtocolType 获取Socket的协议类型。
*RemoteEndPoint 获取远程终结点。
SocketType 获取Socket的类型。
方法 说明
*Accept 创建新的Socket以处理传入的连接请求。
BeginAccept 开始一个异步请求,以创建新的Socket来接受传入的连接请求。
BeginConnect 开始对网络设备连接的异步请求。
BeginReceive 开始从连接的Socket中异步接收数据。
BeginReceiveFrom 开始从指定网络设备中异步接收数据。
BeginSend 将数据异步发送到连接的
BeginSendTo 向特定远程主机异步发送数据。
*Bind 使Socket与一个本地终结点相关联。
*Close 强制Socket连接关闭。
*Connect 建立到远程设备的连接。
*DisConnect 建立到远程设备的连接。
EndAccept 结束异步请求以创建新的Socket来接受传入的连接请求
EndConnect 结束挂起的异步连接请求。
EndReceive 结束挂起的异步读取。
EndReceiveFrom 结束挂起的、从特定终结点进行异步读取。
EndSend 结束挂起的异步发送
EndSendTo 结束挂起的
文档评论(0)