- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
* * * * * * * * * * * * * * * * * 1.2.4 IPEndPoint类 在C#中,IPEndPoint类包含了应用程序连接到主机上的服务所需的IP地址和端口信息。 IPEndPoint类常用的构造函数为: public IPEndPoint(IPAddress, int); 其中第一个参数指定IP地址,第二个参数指定端口号。 例 :IPAddress类、Dns类、IPHostEntry类和IPEndPoint类的使用方法。 * 1.3 套接字 套接字是支持TCP/IP协议的网络通信的基本操作单元。可以将套接字看作不同主机间的进程进行双向通信的端点,它构成了单个主机内及整个网络间的编程界面。 套接字有两种不同的类型:流套接字和数据报套接字。 要通过互联网进行通信,至少需要一对套接字,其中一个运行于客户端,称之为ClientSocket,另一个运行于服务器端,称之为ServerSocket。 * 1.3 套接字(续) 根据连接启动的方式以及本地套接字要连接的目标,套接字之间的连接过程可以分为三个步骤:服务器监听,客户端请求,连接确认。 服务器监听:指服务器端套接字并不定位具体的客户端套接字,而是处于等待连接的状态,实时监控网络状态。 客户端请求:指由客户端的套接字提出连接请求,要连接的目标是服务器端的套接字。 连接确认:指当服务器端套接字监听到或接收到客户端套接字的连接请求时,它就响应客户端套接字的请求,建立一个新的线程,把服务器端套接字的信息发给客户端,一旦客户端确认了此信息,连接即可建立。 * 1.3 套接字(续) 套接字处理数据有两种模式:同步套接字和异步套接字。 同步套接字 其特点是在通过Socket进行连接、接收、发送操作时,客户机或服务器在接收到对方响应前会处于阻塞状态。它适用于数据处理不太多的场合。 异步套接字 在通过Socket进行连接、接收、发送操作时,客户机或服务器不会处于阻塞方式,而是利用callback机制进行连接、接收和发送处理,这样就可以在调用发送或接收的方法后直接返回,并继续执行下面的程序。 * 1.3.2 面向连接的套接字 IP连接领域有两种通信类型: 面向连接的(connection-oriented) 在面向连接的套接字中,使用TCP协议来建立两个IP地址端点之间的会话。一旦建立了这种连接,就可以在设备之间可靠的传输数据。 无连接的(connectionless) 为了建立面向连接的套接字,服务器和客户端必须分别进行编程。 对于服务器端程序,建立的套接字必须绑定到用于TCP通信的本地IP地址和端口上。 * 1.3.2 面向连接的套接字(续) Bind方法用于完成绑定工作: Bind(IPEndPoint address) Address为IPEndPoint的实例,该实例包括一个本地IP地址和一个端口号。在套接字绑定到本地之后,就用Listen方法等待客户机发出的连接尝试: Listen(int backlog) Backlog参数指出系统等待用户程序服务排队的连接数,超过连接数的任何客户都不能与服务器进行通信。 在Listen方法执行之后,服务器已经做好了接收任何引进连接的准备,这是用Accept方法来完成的,当有新客户进行连接时,该方法就返回一个新的套接字描述符。 * 1.3.3 无连接的套接字 UDP协议使用无连接的套接字,不需要在网络设备之间发送连接信息。 UDP客户机不需要Connect方法。 由于不存在确定的连接,所以可以直接使用SendTo方法和ReceiveFrom方法发送和接收数据,在两个设备之间的通信结束之后,可以像TCP中使用的方法一样,对套接字使用Shutdown和Close方法。 需要接收数据时,必须使用Bind方法将套接字绑定到一个本地地址/端口对上后才能使用ReceiveFrom方法接收数据,如果只发送而不接收,则不需要使用Bind方法。 * 1.4 网络流 流(stream)是对串行传输的数据的一种抽象表示,底层的设备可以是文件、外部设备、主存、网络套接字等。 流有三种基本的操作:写入、读取和查找。 若数据从内存缓冲区传输到外部源,这样的流叫作“写入流”。若数据从外部源传输到内存缓冲区,这样的流叫作“读取流”。 C#在System.Net.Sockets名称空间中提供了一个专门的NetworkStream类
文档评论(0)