一.课程设计目的: 1、掌握 TCP/IP协议的工作原理。 2、实现套接字网络编程。 二.课程设计内容: 1、理解 TCP/IP协议通信方服务器的工作过程。 2、理解 TCP/IP协议通信方客户机的工作过程。 3、编程实现网络通信。 三.套接字网络编程: 1、套接字简介:套接字,是支持 TCP/IP的网络通信的基本操作单元,可以看做是不同主机之间的进程进行双向通信的端面点,简单的说就是通信的两方的一种约定,用套接字中的相关函数来完成通信过程 2、套接字基本概念:要通过 Internet进行通信,至少需要一对套接字,其中一个运行在客户端,称之为 ClientSocket,另一个运行于服务器端面,称为 ServerSocket。根据连接启动的方式以及本地要连接的目标,套接字之间的连接过程可以分为三个步骤:服务器监听、客户端请求、连接确认。 服务器监听是指服务端套接字并不定位具体的客户端套接字,而是处于等待连接的状态,实时监控网络状态。 客户端请求是由客户端的套接字提出连接请求,要连接的目标是服务器端套接字。为此,客户端的套接字必须首先描述它要连接的服务器的套接字,指出服务器套接字的地址和端口号,然后再向服务器端套接字提出连接请求。 连接确认是当服务器端套接字监听到或者说接收到客户端套接字的连接请求时,它就响应客户端套接字的请求,建立一个新的线程,把服务器端套接字的信息发送给客户端,一旦客户端确认了此连接,连接即可建立。而服务器端继续处于监听状态,继续接收其他客户端的连接请求。 3、服务端和客户端工作方式如图: 4、客户端和服务端具体实现步骤: 客户端:客户端程序包括程序文件 client.asm和资源文件client.rc。资源文件确定了客户端的界面形式。 ①它先调用函数初始化 WinSock库。 ②当用户输入 IP并点击连接按钮后,使用 Socket函数创建流套接字,使用 WSAAsyncSelect函数将通知消息自定义的 ID(即:hSocket)绑定到窗口过程中,再使用 connect函数去连接服务器。 ③连接成功时,系统会通知消息给客户端窗口。 ④连接成功后就可以传输数据了。 A. 系统原语 recv收到数据后,发送系统通知消息 FD_READ,客户端将从缓冲区 szReadBuffer中读取数据。 B. 客户端需要发送数据时,从对话框中获取数据,写入缓冲区@szBuffer,调用系统原语 send函数发送出数据,在收到系统FD_WRITE通知消息后,继续发送数据。 C. 在缓冲区满或发送失败时,客户端将重发并等待 FD_WRITE通知消息的...