全球旧事资料 分类
它包括服务器和客户机两个部分。它们的程序界面如图33。
图33TCP传输演示程序界面TCPDemo的演示过程如下:(1)将服务器和客户机两部分程序都运行起来(此时服务器已经启动了侦听客户机连接请求的子线程,侦听端口号为10028)。(2)在客户机程序界面上输入服务器的IP地址(如果服务器和客户机运行在同一台机器上,IP地址可以指定为127001)、侦听端口号(因为服务器在10028端口上侦听,这里也应该指定为10028)。(3)点击客户机程序界面上的“Co
ect”按钮,向服务器发送Socket连接请求。
f(4)服务器侦听到有客户机的连接请求后便接受它(于是在两个程序之间就建立了一条可靠的Socket连接)。然后服务器会向客户机发送两次字符串数据。(5)客户机接收到数据后,弹出两次如图34的消息框。
图34TCP传输客户机接收到数据后显示的消息框
提示:TCPDemo为什么使用10028作为TCP通信的端口号?因为TCP数据包的TCP头结构中,使用了16位的域来表示一个端口号。因此,有65536个可能的端口号。不过,01023是周知口(众所周知的端口,比如80是超文本传输协议http的端口,25是简单邮件传输协议smtp的端口,20和21是文件传输协议ftp的端口等),比1023大的端口号通常被称为高端口号。应用程序一般使用高端口号提供自己的通信服务。TCPDemo使用10028端口是偶然的,只要比1023大就可以了。
TCPDemo在具体实现时,设计了一个CTCPListe
er类专门用于服务器对特定TCP端口的侦听。另外,设计了一个CStreamSocket类专门用于TCP数据的传输。CStreamSocket作为基类,服务器程序从它派生出另一个类CSocketSe
der专门用于数据的发送,客户机程序从它派生出CSocketReceiver类专门用于数据的接收。这些类的继承结构如图35。
CStreamSocketCDialogCSocketSe
derCTCPListe
erCTCPServerDlgCSocketReceiver
CMsgStatio

CMsgReceiver
图35TCPDemo的类继承结构
提示:关于CMsgStatio
和CMsgReceiver两个类的功能介绍,请读者另行参考本书的“241一种不错的设计模式”。CTCPListe
erhif
def__H_CTCPListe
er__defi
e__H_CTCPListe
er__i
clude
好听全球资料 返回顶部