实验四 客户服务器通信

实验四 客户服务器通信

ID:38699065

大小:559.50 KB

页数:13页

时间:2019-06-17

实验四 客户服务器通信_第1页
实验四 客户服务器通信_第2页
实验四 客户服务器通信_第3页
实验四 客户服务器通信_第4页
实验四 客户服务器通信_第5页
资源描述:

《实验四 客户服务器通信》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、实验四客户/服务器通信实验一、实验目的1.学习Linux的网络编程的基本知识2.理解socket结构和机制3.编写简单客户/服务器通信程序二、实验内容1.了解Linux的网络编程的基本知识:TCP/IP协议,寻址机制,客户/服务器通信机制;2.理解端口的概念,熟悉socket有关的编程结构和函数,比如:socket(),bind(),connect(),listen(),accept(),send(),recv(),close();3.自己编写ip2uint()函数,把IP地址转换为unsignedint格式;4.参考附录中的源文件,在两个虚拟控制台分别实现分

2、别服务器端和客户端功能,实现以下功能:1)服务器端程序通过一个连接向客户端发送字符串"Hello,world!\n”,画出客户端程序和服务器端程序的流程图;2)服务器端程序通过一个连接向客户端发送由客户端指定的文件,画出客户端程序和服务器端程序的流程图;5.在虚拟控制台分别编译、调试程序;三、实验指导与步骤按照以下步骤分别实现功能1和功能2:1、首先编写好服务器和客户端程序;2、打开一个虚拟终端,用gcc编译预先写好的服务器和客户端程序;3、运行服务器程序;4、打开另一个虚拟终端,运行客户端程序,连接成功后服务器给客户端发送数据;四、实验报告要求1.实验目的2

3、.实验内容3.实验步骤记录自己实际完成的步骤,实验过程中所碰到的难题以及你解决问题的步骤和方法;4.实验技巧和心得体会附录:简单的客户/服务器通信示例一个建立分布式应用时最常用的范例便是客户机/服务器模型。在这种方案中,客户应用程序向服务器程序请求服务,这种方式隐含了在建立客户机/服务器间通信的非对称性。客户机/服务器模型工作时要求有一套为客户机和服务器所共识的协议,以保证服务能够被提供或被接收,它必须在通信的两端都被实现。在非对称协议中,一方为主机(服务器),另一方则是从机(客户机)。当服务被提供时必然存在“客户进程”和“服务进程”。一个服务器通常在一个众所

4、周知的端口监听对服务的请求。也就是说,服务器一直处于休眠状态,直到一个客户对这个服务的端口提出连接请求。在这个时刻,服务程序被唤醒并且为客户提供服务,对客户的请求做出了适当的反应。其流程见图1。例1:服务器端程序通过一个连接向客户发送字符串"Hello,world!\n”。在PC机上运行服务器端程序,在开发板上运行客户端程序并输入服务器的IP地址,则开发板的LCD屏上能显示该字符串。服务器端发送程序host.c:#include#include#include#include#incl

5、ude#include#include#include#include#defineMYPORT3000/*定义服务器的监听端口*/#defineMax100/*定义了服务器一次可以发送的字符数目*/#defineBACKLOG10/*BACKLOG指定在请求队列中允许的最大请求数,进入的连接请求将在队列中等待accept()函数接受它们*/main(){intsock_fd,new_fd,numbytes,i;/*sock_fd,new

6、_fd是套接字描述*/charbuf[Max];/*发送数据的缓冲区*/structsockaddr_inmy_addr;/*服务器的地址结构体*/structsockaddr_intheir_addr;/*主机的地址结构体*/intsin_size;if((sock_fd=socket(AF_INET,SOCK_STREAM,0))==−1)/*建立流式套接字描述符*/{perror("socket");exit(1);}/*服务器结构体的地址赋初值*/my_addr.sin_family=AF_INET;my_addr.sin_port=htons(MYP

7、ORT);/*服务器的端口号*/my_addr.sin_addr.s_addr=INADDR_ANY;bzero(&(my_addr.sin_zero),8);/*填充0,凑齐长度*/if(bind(sock_fd,(structsockaddr*)&my_addr,sizeof(structsockaddr))==−1)/*绑定*/{perror("bindB");/*绑定失败*/exit(1);}if(listen(sock_fd,BACKLOG)==−1)/*监听端口是否有请求*/{perror("listen");/*监听失败*/exit(1);}wh

8、ile(1){sin_size=siz

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。