当前位置:嗨网首页>书籍在线阅读

13-TCP应用编程

  
选择背景色: 黄橙 洋红 淡粉 水蓝 草绿 白色 选择字体: 宋体 黑体 微软雅黑 楷体 选择字体大小: 恢复默认

22.3 TCP应用编程

**本节视频教学录像:2分钟**

TCP是TCP/IP体系中面向连接的运输层协议,在网络中提供全双工的和可靠的服务。根据TCP网络协议,网络中的两个远程主机(或者叫进程,因为实际上远程通信是进程之间的通信,而进程则是运行中的程序),必须首先进行一个握手过程,确认连接成功,之后才能传输实际的数据。比如说进程A想将字符串“It's a fine day today”发给进程B,它首先要建立连接。在这一过程中,它首先需要知道进程B的位置(主机地址和端口号)。随后发送一个不包含实际数据的请求报文,我们可以将这个报文称为“hello”。如果进程B接收到了这个“hello”,就向进程A回复一个“hello”,进程A随后才发送实际的数据“It's a fine day today”。

TCP网络协议是全双工的,即网络中的两个远程主机上的进程(比如进程A、进程B),一旦建立好连接,那么数据就既可以由A流向B,也可以由B流向A。除此以外,它还是点对点的,意思是说一个TCP连接总是两者之间的,在发送中,通过一个连接将数据发给多个接收方是不可能的。TCP还有一个特性,就是称为可靠的数据传输,意思是连接建立后,数据的发送一定能够到达,并且是有序的,就是说发的时候你发了ABC,那么收的一方收到的也一定是ABC,而不会是BCA或者别的什么。

利用TCP开发应用程序时,.NET框架提供有两种工作方式,一种是同步工作方式,另一种是异步工作方式。

同步工作方式是指利用TCP进行编程时程序执行到发送、接收和监听语句时,在未完成工作前不再继续往下执行,即处于阻塞状态,直到该语句完成某个工作后才继续执行下一条语句;异步工作方式是指程序执行到发送、接收和监听语句时,不论工作是否完成,都会继续往下执行。例如,对于接收数据来说,在同步工作方式下,接收方执行到接收语句后将处于阻塞方式,只有接收到对方发来的数据后才继续执行下一条语句;而如果采用异步工作方式,则在程序执行到接收语句后,无论接收方是否接收到对方发来的数据,程序都会继续往下执行。

与同步工作方式和异步工作方式相对应,利用Socket类进行编程时系统也都提供有相应的方法,采用相应的方法进行编程分别称为同步套接字编程和异步套接字编程。但是使用套接字编程比较复杂,涉及很多底层的细节。为了简化套接字编程,.NET框架又专门提供了两个类:TcpClient类与TcpListener类。由于这两个类与套接字一样也分别有各自的同步和异步工作方式及其对应的方法,而我们在编程时,Socket、TcpClient与TcpListener三个类都有可能使用,因此为简化起见,无论使用的是哪个类,我们统统从工作方式上将其称为同步TCP和异步TCP,所以其编程方式也有两种,一种是同步TCP编程,另一种是异步TCP编程。