用 C#实现基于 TCP 协议的网络通讯
协议是一个基本的网络协议,基本上所有的网络服务都是基于 协议
的,如 , 等等,所以要了解网络编程就必须了解基于 协议的编
程。然而 协议是一个庞杂的体系,要彻底的弄清楚它的实现不是一天两天
的功夫,所幸的是在。 环境下,我们不必要去追究 协议
底层的实现,一样可以很方便的编写出基于 协议进行网络通讯的程序。
要进行基于 协议的网络通讯,首先必须建立同远程主机的连接,连接
地址通常包括两部分——主机名和端口,如 : 中,
就是主机名, 指主机的 端口,当然,主机名也可以用
地址代替。当连接建立之后,就可以使用这个连接去发送和接收数据包,
协议的作用就是保证这些数据包能到达终点并且能按照正确的顺序组装起
来。
在。 的类库()中,提供了两个用于
网络通讯的类,分别是 和 由其英文意义显而易见,
类是基于 协议的客户端类,而 是服务器端,监听
()客户端传来的连接请求。 类通过 协议与服务器进行
通讯并获取信息,它的内部封装了一个 类的实例,这个 对象被
用来使用 协议向服务器请求和获取数据。因为与远程主机的交互是以数据
流的形式出现的,所以传输的数据可以使用。 中流处理技术读
写。在我们下边的例子中,你可以看到使用 类操作数据流的
方法。
在下面的例子中,我们将建立一个时间服务器,包括服务器端程序和客户
端程序。服务器端监听客户端的连接请求,建立连接以后向客户端发送当前的
系统时间。
先运行服务器端程序,下面截图显示了服务器端程序运行的状况:
然后运行客户端程序,客户端首先发送连接请求到服务器端,服务器端回
应后发送当前时间到客户端,这是客户端程序的截图:
发送完成后,服务器端继续等待下一次连接:
通过这个例子我们可以了解 类的基本用法,要使用这个类,必
须使用 命名空间,本例用到的三个命名空间如下:
!"
!"
!#"$$从字节数组中获取字符串时使用该