实验3 :计算机网络实验——网络编程 1 一、实验目的: (1)熟悉和掌握网络编程的基本方法和步骤; (2)进一步理解 client/serv er 交互模式; (3)加深学生对于网络协议概念的理解以及协议的设计和实现方法。 二、实验任务: 使用任意网络编程语言(Jav a、C、VB、Delphi 等)编写网络选课模拟程序,它由 client 和 serv er两部分组成,client 和 serv er 之间的通信基于 TCP 协议。实现数据的收发。 三、网络编程: 大多数网络应用程序都遵从 client/serv er 交互模型。该模型中,服务器应用是一种专门用来提供某一种服务的程序,它被动地等待通信,而客户应用主动地启动通信,请求服务器的服务。服务器程序既可以接收信息也能发送信息,还可以成为客户。 TCP/UDP 赋予每个服务一个唯一的协议端口号。服务器程序通过协议端口号来指定它所提供的服务,然后被动地等待通信。客户在发送连接请求时,必须说明服务器程序运行主机的 IP 地址和协议端口号来指定它所希望的服务。服务器端计算机通过此端口号将收到的请求转向正确的服务器程序。 大多数网络编程语言都提供或者使用控件封装了套接字应用程序接口(Socket API),应用程序通过套接字接口调用来实现和传输层交互。用户目前可以使用两种套接口,即流套接字 TCP 和数据报套接字 UDP。流式套接字定义了一种可靠的面向连接的服务,提供了双向的,有序的,无重复并且无记录边界的数据流服务。数据报套接字定义了一种无连接的服务,支持双向的数据流,但并不保证是可靠,有序,无重复的。也就是说,一个从数据报套接字接收信息的进程有可能发现信息重复了,或者和发出时的顺序不同。数据报套接字的一个重要特点是它保留了记录边界。 套节字 API 主要包括表 1 所示的接口。 使用面向连接的套接字编程,通过图 2 来表示其时序。套接字工作过程如下:服务器首先启动,通过调用 socket()建立一个套接字,然后调用 bind()将该套接字和本地网络地址联系在一起,再调用listen()使套接字做好侦听的准备,并规定它的请求队列的长度,之后就调用 accept()来接收连接。客户在建立套接字后就可调用 connect()和服务器建立连接,连接一旦建立,客户机和服务器之间就可以通过调用 read()和 w rite()来发送和接收数据。最后,待数据传送结束后,双方调用 close()关闭套接字。 表1 套节字API 主要接口 接口 解释 SOCKET BIND LISTEN ACCEPT CONN...