欢迎来到天天文库
浏览记录
ID:35204526
大小:97.50 KB
页数:11页
时间:2019-03-21
《《网络编程技术》实验指导书》由会员上传分享,免费在线阅读,更多相关内容在应用文档-天天文库。
1、《计算机网络》课程设计--协议设计与编码实现指导书 实验1.Windows平台简单套接字编程实验类型:设计性一、实验环境操作系统:Windows编程工具及集成开发环境:VC++二、实验目的和要求实验目的:掌握Windows平台上简单的客户机端和服务器端的套接字编程。实验要求:(1)在Windows上,编写、编译1个客户机端程序和1个服务器端程序。要求客户机端程序能发送请求给服务器端程序,服务器端程序收到后能发送本机时间给客户机端程序。(2)在相同或不同机子上,先运行服务器端程序可执行文件,后运行客户机端程序可执行文件。TCP/UDP赋予每个服务一个唯一的协议端口
2、号。服务器程序通过协议端口号来指定它所提供的服务,然后被动地等待通信。客户在发送连接请求时,必须说明服务器程序运行主机的IP地址和协议端口号来指定它所希望的服务。服务器端计算机通过此端口号将收到的请求转向正确的服务器程序。大多数网络编程语言都提供或者使用控件封装了套接字应用程序接口(SocketAPI),应用程序通过套接字接口调用来实现和传输层交互。用户目前可以使用两种套接口,即流套接字TCP和数据报套接字UDP。流式套接字定义了一种可靠的面向连接的服务,提供了双向的,有序的,无重复的数据流服务。数据报套接字定义了一种无连接的服务,支持双向的数据流,但并不保证是可靠,有
3、序,无重复的。也就是说,一个从数据报套接字接收信息的进程有可能发现信息重复了,或者和发出时的顺序不同。套节字API主要包括表1所示的接口。使用面向连接的套接字编程,通过图2来表示其时序。套接字工作过程如下:服务器首先启动,通过调用socket()建立一个套接字,然后调用bind()将该套接字和本地网络地址联系在一起,再调用listen()使套接字做好侦听的准备,并规定它的请求队列的长度,之后就调用accept()来接收连接。客户在建立套接字后就可调用connect()和服务器建立连接,连接一旦建立,客户机和服务器之间就可以通过调用read()和write()来发送和接收
4、数据。最后,待数据传送结束后,双方调用close()关闭套接字。表1套节字API主要接口接口解释SOCKETBINDLISTENACCEPTCONNETSENDRECVCLOSE创建一个新的套接字给服务器绑定一个传输层地址将服务器设为被动模式接收客户的一个请求客户向服务器发起连接向一个连接的套接字发送数据从一个连接的套接字接收数据终止一个连接图1面向连接套接口应用程序时序图实验2.并发套接字编程实验类型:设计性一、实验环境操作系统:Windows或Linux编程工具及集成开发环境:VC++二、实验目的和要求实验目的:掌握Linux或Windows平台上多线程、多进程或异
5、步I/O的套接字编程。实验要求:(1)在Windows上,编写、编译1个客户机端程序和1个服务器端程序。要求客户机端程序能发送请求给服务器端程序,服务器端程序收到后能发送本机时间给客户机端程序。(2)在相同或不同机子上,先运行服务器端程序可执行文件,后运行客户机端程序可执行文件。可选内容:(1)编写Linux或Windows平台上采取各并发方式的1种程序。(2)测试多线程、多进程或异步I/O的性能。三、实验提示(1)多线程程序编译连接需要用-pthread选项创建TCP并发服务器的算法如下: socket(……);//创建一个TCP套接字 bind(……);
6、 //邦定公认的端口号 listen(……);//倾听客户端连接 while(1) //开始循环接收客户端的接收 { accept(……);//接收一个客户端的连接 if(fork(……)==0) //创建子进程 { while(1) { //子进程处理某个客户端的连接
7、 read(……); process(……); write(……); } close(……); //关闭子进程处理的客户端连接 exit(……);//终止该子进程 }
此文档下载收益归作者所有