实验二:基于C/S结构的套接字程序设计
一、实验目的
1、理解基于C/S结构的网络通信模型。
2、掌握利用WinSock编写基于C/S结构的TCP/UDP通信程序的方法。
二、实验内容
1、用C/C++或Java编写一个服务器端的控制台程序,要求分别创建一个TCP端口侦听线程、一个UDP服务线程,服务器端会为每一个新到的TCP连接请求创建专门的服务线程;服务器端分别创建两个Socket,即TCP Server Socket和UDP Server Socket,服务器端在这两个端口上侦听连接,接收来自客户端的服务请求。
2、用C/C++或Java编写一个客户机端的控制台程序,要求分别创建两个Socket,TCP Socket连接TCP Server待建立TCP连接后Server首先向Client发送自己的UDP Server端口号和启动命令字符串“START”;Client收到UDP Server端口号和启动命令后,为用户显示如下图所示3个服务选项:
用户分别选择任意一个服务后从服务器获得相应的服务。
三、实验步骤及实验结果
1、实验内容1的实验步骤如下:
1)利用参考代码在MS VC++ 6.0开发工具编中写一个控制台程序
2)cmd窗口运行server,打开服务器,等待用户访问
3)IP地址为:172.22.119.224的用户访问上服务器
4)返回服务器当前时间(以TCP数据报形式返回)
5)收到用户发来的UDP数据报形式数据包,并以UDP数据报形式返回数据包
2、实验内容2的实验步骤如下:
1)利用参考代码在MS VC++ 6.0开发工具编中写一个控制台程序
2)cmd窗口运行client,用户访问上IP地址为:172.22.119.224的服务器
3)请求返回服务器当前时间(以TCP数据报形式访问)
4)向服务器发送UDP数据报形式数据包,并请求服务器以UDP数据报形式返回数据包
四、实验结果分析
Server端完成的功能是要同时提供面向连接和无连接的网络服务。对于面向连接的服务,程序需要一个线程用于侦听连接,当有客户端连接到服务器的时候,Server返回一个实际与之连接的新套接字,然后使用某个服务机制为之提供服务。对于无连接的服务,只须提供一个线程,在该线程中创建一个UDP套接字对到来的各种请求做出应答即可。
五、实验心得体会
六、思考题: