第 13章 网络编程基础
人民邮电出版社
21世纪高等学校计算机基础教育系列教材
WinSock 控件利用 WinSock 控件可以与远程计算机建立连接,并通过用户数据报文协议 (UDP)或者传输控制协议 (TCP)进行数据交换。这两种协议都可以用来创建客户端与服务器应用程序。与 Timer 控件类似,WinSock 控件在运行时是不可见的。使用这种控件可能的用途有:
创建收集用户信息的客户端应用程序,并将收集的信息发送到某中央服务器。
创建一个服务器应用程序,作为多个用户的数据的汇入点。
创建“聊天”应用程序。
13.1.1 选择通讯协议在使用 WinSock 控件时,首先需要考虑使用什么协议。可以使用的协议包括 TCP 和
UDP。两种协议之间的重要区别在于它们的连接状态:
TCP 协议控件是基于连接的协议,可以将它同电话系统相比。在开始数据传输之前,
用户必须先建立连接。
UDP 协议是一种无连接协议,两台计算机之间的传输类似于传递邮件:消息从一台计算机发送到另一台计算机,但是两者之间没有明确的连接。另外,单次传输的最大数据量取决于具体的网络。
到底选择哪一种协议通常是由需要创建的应用程序决定的。下面的几个问题将有助于选择适宜的协议:
在收发数据的时候,应用程序是否需要得到客户端或者服务器的确认信息?如果需要,
使用 TCP 协议,在收发数据之前先建立明确的连接。
数据量是否特别大(例如图像与声音文件),在连接建立之后,TCP 协议将维护连接并确保数据的完整性。不过,这种连接需要更多的计算资源,因而是比较“昂贵”的。
数据发送是间歇的,还是在一个会话内?例如,如果应用程序在某个任务完成的时候需要通知某个计算机,UDP 协议是更适宜的。 UDP 协议适合发送少量的数据。
13.1.2 协议的设置在设计时,可以按如下方式设置应用程序中所使用的协议:在“属性”窗口中单击“协议”,然后选择 sckTCPProtocol 或者 sckUDPProtocol。也可以使用程序代码来设置 Protocol 属性,如下所示:
WinSock1.Protocol = sckTCPProtocol
13.1.3 确定计算机的名称在与远程计算机相连接的时候,需要知道它的 IP 地址或者它的名称,就是在计算机的属性中设定的计算机的名称(我的电脑属性,计算机名称)。 IP 地址是一串数字,每三个数字为一组,中间用点隔开(形如 xxx.xxx.xxx.xxx,例如
127.0.0.1)。通常,最易记住的是计算机的名称。
上面找到的计算机名称可以作为 RemoteHost 属性的值。
13.1.4 TCP 连接初步如果应用程序要使用 TCP 协议,那么首先必须决定应用程序是服务器还是客户端。如果要创建一个服务器端,那么应用程序需要“监听”指定的端口。当客户端提出连接请求时,
服务器端能够接受请求并建立连接。在连接建立之后,客户端与服务器端可以自由地互相通讯。
程序设计举例见教材。
人民邮电出版社
21世纪高等学校计算机基础教育系列教材
WinSock 控件利用 WinSock 控件可以与远程计算机建立连接,并通过用户数据报文协议 (UDP)或者传输控制协议 (TCP)进行数据交换。这两种协议都可以用来创建客户端与服务器应用程序。与 Timer 控件类似,WinSock 控件在运行时是不可见的。使用这种控件可能的用途有:
创建收集用户信息的客户端应用程序,并将收集的信息发送到某中央服务器。
创建一个服务器应用程序,作为多个用户的数据的汇入点。
创建“聊天”应用程序。
13.1.1 选择通讯协议在使用 WinSock 控件时,首先需要考虑使用什么协议。可以使用的协议包括 TCP 和
UDP。两种协议之间的重要区别在于它们的连接状态:
TCP 协议控件是基于连接的协议,可以将它同电话系统相比。在开始数据传输之前,
用户必须先建立连接。
UDP 协议是一种无连接协议,两台计算机之间的传输类似于传递邮件:消息从一台计算机发送到另一台计算机,但是两者之间没有明确的连接。另外,单次传输的最大数据量取决于具体的网络。
到底选择哪一种协议通常是由需要创建的应用程序决定的。下面的几个问题将有助于选择适宜的协议:
在收发数据的时候,应用程序是否需要得到客户端或者服务器的确认信息?如果需要,
使用 TCP 协议,在收发数据之前先建立明确的连接。
数据量是否特别大(例如图像与声音文件),在连接建立之后,TCP 协议将维护连接并确保数据的完整性。不过,这种连接需要更多的计算资源,因而是比较“昂贵”的。
数据发送是间歇的,还是在一个会话内?例如,如果应用程序在某个任务完成的时候需要通知某个计算机,UDP 协议是更适宜的。 UDP 协议适合发送少量的数据。
13.1.2 协议的设置在设计时,可以按如下方式设置应用程序中所使用的协议:在“属性”窗口中单击“协议”,然后选择 sckTCPProtocol 或者 sckUDPProtocol。也可以使用程序代码来设置 Protocol 属性,如下所示:
WinSock1.Protocol = sckTCPProtocol
13.1.3 确定计算机的名称在与远程计算机相连接的时候,需要知道它的 IP 地址或者它的名称,就是在计算机的属性中设定的计算机的名称(我的电脑属性,计算机名称)。 IP 地址是一串数字,每三个数字为一组,中间用点隔开(形如 xxx.xxx.xxx.xxx,例如
127.0.0.1)。通常,最易记住的是计算机的名称。
上面找到的计算机名称可以作为 RemoteHost 属性的值。
13.1.4 TCP 连接初步如果应用程序要使用 TCP 协议,那么首先必须决定应用程序是服务器还是客户端。如果要创建一个服务器端,那么应用程序需要“监听”指定的端口。当客户端提出连接请求时,
服务器端能够接受请求并建立连接。在连接建立之后,客户端与服务器端可以自由地互相通讯。
程序设计举例见教材。