为了正常的体验网站,请在浏览器设置里面开启Javascript功能!
首页 > 网络编程实验报告要点

网络编程实验报告要点

2020-03-09 10页 doc 51KB 10阅读

用户头像

is_614050

暂无简介

举报
网络编程实验报告要点 网络编程 课程设计报告   题 目: 基于Linux网络聊天室的设计   姓 名: 陈佳悦 陈雄兰   学 院: 信息科学技术学院   专 业: 网络工程   班 级: 网络工程102   学 号: 19310213 19310214   指导教师: 薛 卫 职称: 副教授         基于Linux网络聊天室的设计 摘要:本课程设计是在Linux环境下基于Socket进行开发的。系统服务器端和客户端组成。服务端程...
网络编程实验报告要点
网络编程 课程设计报告   题 目: 基于Linux网络聊天室的设计   姓 名: 陈佳悦 陈雄兰   学 院: 信息科学技术学院   专 业: 网络工程   班 级: 网络工程102   学 号: 19310213 19310214   指导教师: 薛 卫 职称: 副教授         基于Linux网络聊天室的设计 摘要:本课程设计是在Linux环境下基于Socket进行开发的。系统服务器端和客户端组成。服务端程序通过共享存储区存储聊天数据,并发送给每个连接的客户端。通过多路复用的子进程实现服务端与多个客户端之间的数据发送与接收。可以在单机上开辟两个窗口分别运行客户、服务器的程序。本方案经gcc调试器调试成功,可以在机网络聊天中使用。 关键词:网络聊天;linux ;socket 1.相关概念及技术 1.1 网络套接字编程 1.1.1套接字基本概念 套接字是通信的基石,是支持TCP/IP的网络通信的基本操作单元。可以将套接字看作不同主机间的进程进行双向通信的端点,它构成了单个主机内及整个网络间的编程界面。套接字存在于通信域中,通信域是为了处理一般的线程通过套接字通信而引进的一种抽象概念。套接字通常和同一个域中的套接字交换数据(数据交换也可能穿越域的界限,但这时一定要执行某种解释程序)。各种进程使用这个相同的域互相之间用Internet协议簇来进行通信。 1.1.2 套接字工作原理 要通过互联网进行通信,你至少需要一对套接字,其中一个运行于客户机端,我们称之为ClientSocket,另一个运行于服务器端,我们称之为ServerSocket。 根据连接启动的方式以及本地套接字要连接的目标,套接字之间的连接过程可以分为三个步骤:服务器监听,客户端请求,连接确认。 所谓服务器监听,是服务器端套接字并不定位具体的客户端套接字,而是处于等待连接的状态,实时监控网络状态。 所谓客户端请求,是指由客户端的套接字提出连接请求,要连接的目标是服务器端的套接字。为此,客户端的套接字必须首先描述它要连接的服务器的套接字,指出服务器端套接字的地址和端口号,然后就向服务器端套接字提出连接请求。 所谓连接确认,是指当服务器端套接字监听到或者说接收到客户端套接字的连接请求,它就响应客户端套接字的请求,建立一个新的线程,把服务器端套接字的描述发给客户端,一旦客户端确认了此描述,连接就建立好了。而服务器端套接字继续处于监听状态,继续接收其他客户端套接字的连接请求。  1.1.3 linux中socket的基本应用: 服务端建立套接字的大致步骤: (1)建立socket。 (2)bindPort 绑定特定的端口。 (3)listen 监听特定的端口。 (4)accept,当有客户端连接服务器端口时,accept接收信息,并返回新的套接字描述符,提供给操作 (5)根据实际需求,write,read,send,recv等操作 (6)关闭套接字。 客户端大致步骤: 1)创建socket. 2)根据服务器地址,connect连接到特定服务器。 3)write,read等读写操作。 4)关闭套接字。 1.2 客户/服务器模型 应用程序之间为了能顺利地进行通信,一方通常需要处于守候状态,等待另一方请求的到来。在分布式计算中,一个应用程序被动地等待,而另一个应用程序通过请求启动通信的模式就是客户/服务器模式。 客户/服务器模型的典型运行过程包括五个主要步骤: (1)服务器监听相应窗口的输入。 (2)客户机发出请求。 (3)服务器接收到此请求。 (4)服务器处理此请求,并将结果返回给客户机。 (5)重复上述过程,直至完成一次会话过程任务。 运作过程如下: 1.3 多路复用技术 多路复用一般有以下几种技术: (1) 非阻塞通信技术: 将文件管道设为非阻塞通信方式, 每隔一段时间对他们实行一次轮询, 以判断是否可以进行读写操作。 (2)信号驱动的异步I/O 技术。首先, 异步I/O 是基于信号机制的, 并不可靠。其次, 单一的信号不足以提供更多的信息来源。还是需要辅助以其他的手段, 实现有很高的难度。 (3)select()技术。在BSD 中提供了一种可以对多路I/O 进行阻塞式查询的—select()。它提供同时对多个I/O 描述符进行阻塞式查询的方法。 (4) 子进程技术。应用多个子进程, 每一个对一个单工阻塞方式通信。所有子进程通过IPC 和父进程进行通信。父进程掌管所有信息。该聊天室即采用此种子进程技术。 1.4相关函数调用 (1) Socket() 作用:socket函数为客户机或服务器创建一个sokcet 格式: int socket(int family,int type,int protocol); 参数说明: Family:表示地址族,可以去AF_UNLX和AF_INT。 其中,AF_UNLX只能够用于单一的UNIX系统进程间通信;AF_INT是针对Internet的,因而可以允许在远程主机之间通信,实验中使用AF_INT。 Type:网络程序所采用的通信协议,可以取SOCK_STREAM或SOCK_DGRAM。其中,SOCK_STREAM表明使用的是TCP协议,这样提供按顺序的、可靠的、双向、面向连接的比特流;SOCKE_DGRAM表明使用的是UDP协议,这样只会提供定长、不可靠、无连接的通信。 (2)bind( ) 格式:int bind(int sockfd,struct sockaddr *addr,int addrlen); 参数说明: Sockfd:socket的文件描述符号。 Sockaddr:表示名字所用的一个数据结构,用来保存地址(包括IP地址和端口) Addrlen:设置结构大小长度。 (3)listen() 格式:int listen(int sockfd, int backlog); 作用:监听连接信号,和accepted函数。 参数说明: Sockfd:表示socket调用返回的文件描述符。 Backlog:表示接入队列允许的连接数目,大多数系统允许20个,也可以子定义5~10个。 (4)accept() 格式:Int accept (int sockfd, void *addr, int *addrlen); 作用:与listen函数合用,监听信息、接收客户端请求。 参数说明: Sockfd:表示socket的文件描述符。 Addr:表示指向局部的数据结构struct sockaddr-in的指针。 Addrlen:表示地址的长度。 (5)connect() 格式: int connect( int sockfd , struct sockaddr *serv_addr , int addrlen); 作用:在面向连接的系统中客户及连接服务器时使用,connect必须在bind后使用。 参数作用: Sockfd:表示socket的文件描述符。 Serv-addr:表示村访目的端口和ip地址(套接字)的数据结构。 (6)send() 和 recv() 格式1:Int send (int sockfd, const vod *msg,int len, int flags); 功能:发送信息。 格式2:Int recv (int sockfd , void *buf,int len, usigned int flags); 作用:用于流式socket、数据报socket内部之间的通信。 (7)bindPort() 格式:int bindPort(unsigned  short  int  port) 作用:创建套接字,并绑定到指定端口。 参数说明:指定所指定的端口号。 (8)fork() 作用:创建一个新的子进程,而这个子进程是父进程的副本,接下来这两个进行就由操作系统调度,直到程序执行结束。 2.系统设计与功能 2.1整体程序设计: 服务端程序通过共享存储区存储聊天数据,并发送给每个连接的客户端;服务端程序和客户端程序都是通过父子进程分别负责发送和接收数据的,以避免数据冲撞. 2.1.1服务器端程序设计: (1)建立服务器端,创建共享存储区,便于客户与客户之间的信息交流,及服务端的。 (2) 创建socket套接字 ,并绑定到指定端口,监听套接字(客户套接字)。 (3) 在监听过程中接受客户端连接,并发送问候信息。 (4)接收到客户端连接的信息后开始创建子进程,其中父进程用于接受信息,子进程用于发送信息,实现多线程操作。 2.1.2客户端程序设计: (1) 建立一个客户端的socket套接字,绑定客户端套接字连接服务端。 (2) 连接成功后,创建子进程,其中父进程用于接受信息,子进程用于发送信息。 (3) 创建子进程成功后,可以进行客户端与客户端的通信聊天。 2.2 系统功能: (1)创建服务器后,服务器创建了共享存储区,方便客户与客户之间聊天信息的记录,包括聊天具体内容及时间记录。 (2)客户端创建后如xx(需输入ip地址、端口号、用户名 如下面截图实例:./c 127.0.0.1 6666 xx),在服务器的监听下,很快xx就与服务器建立了连接。 (3)与此同时另一客户yy创建,同理yy也与服务器建立了连接,此时两客户端就可以通过服务器建立连接,开始聊天。 (4)在服务器上,也一直记录了客户端间的聊天记录具体信息。 3.主要算法及流程图 图5为客户端主程序的流程图; 图6为客户端get()函数即文件下载的流程图; 图7为服务器端出程序流程图;
/
本文档为【网络编程实验报告要点】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。 本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。 网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。

历史搜索

    清空历史搜索