网络程序设计+113302班+杨天+杨国浩+豆全胜+梁小龙供参习.docxVIP

网络程序设计+113302班+杨天+杨国浩+豆全胜+梁小龙供参习.docx

  1. 1、本文档共18页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
网络程序设计113302班杨天杨国浩豆全胜梁小龙供参习

网络程序设计课程设计报告113302梁小杨杨国豆全胜2013年12月24日第1章课程设计目的、要求1.1课程设计目的1.熟练掌握所学到的网络套接字函数。2.掌握UDP和TCP编程关键函数。3.掌握多进程或多线程编程。4.掌握使用select实现I/O复用。5.掌握守护进程的编写。1.2实验要求1.认真阅读和掌握本实验的相关的知识点。2.上机编写并运行程序。1.3实验内容实现一个并发、IO复用的守护进程时间服务器,要求当客户端向服务器发送“what’s time?”字符串时,服务器回应当时的系统时间字符串。1.4小组分工成员负责内容梁小龙任务书、课程设计资料查询、代码测试杨国浩服务器端程序I/O复用模块分析与设计杨天客户端clinet整体程序、课程设计报告豆全胜服务器端守护进程模块与主函数模块第2章课程设计分析及内容2.1所用知识点2.1.1套接字函数①客户端所用函数:socket()函数、connect()函数、send()函数、recv()函数,close()函数。②服务器端所用函数:bind()函数、socket()函数、listen()函数、accept()函数、send()函数、accept()函数、recv()函数、close()函数。2.1.2守护进程守护进程,也就是通常说的Daemon进程,是Linux中的后台服务进程。它是一个生存期较长的进程,通常独立于控制终端并且周期性地执行某种任务或等待处理某些发生的事件。守护进程常常在系统引导装入时启动,在系统关闭时终止。Linux系统有很多守护进程,大多数服务都是通过守护进程实现的。每一个从此终端开始运行的进程都会依附于这个终端,这个终端就称为这些进程的控制终端,当控制终端被关闭时,相应的进程都会自动关闭。但是守护进程却能够突破这种限制,它从被执行开始运转,直到整个系统关闭时才退出。如果想让某个进程不因为用户或终端或其他地变化而受到影响,那么就必须把这个进程变成一个守护进程。2.1.3I/O复用I/O复用调用select或poll,并在该函数上阻塞,等待数据报套接口可读;当select返回可读条件时,调用recvfrom将数据报拷贝到应用程序缓冲区中。主要应用:(1)客户程序需要同时处理交互式的输入和服务器之间的网络连接。(2)客户端需要对多个网络连接作出反应。(3)TCP服务器需要同时处理多个处于监听状态和多个连接状态的套接字。(4)服务器需要处理多个网络协议的套接字。(5)服务器需要同时处理不同的网络服务和协议。2.1.4并发服务器不同于顺序服务器,并发服务器就要能在一个时间为多个客户端提供服务。例如,一个聊天服务器可能服务一个特定的客户端数小时──在停止为这个客户端服务之前服务器不能等待,除非是在等待一下个客户端到来之前的间隙才能等待。第3章课程设计的实现3.1 程序运行步骤对于服务器端而言,由于它是一个守护进程所以只要做到接收信息并且存储在一个数组中即可而不必在前台显示,对于客户端必须有信息的发送和接收。服务器端必须对来自客户端的信息加以判断。如果接收到的字符串与“what’s_time?”字符串行匹配那么则返回给客户端一个系统的时间信息,否则返回给客户端“Input error”的字符串。如下图所示:图3-1连接流程图3.2 客户端主要函数3.2.1socket()函数socket()函数用于根据指定的地址族、数据类型和协议来分配一个套接口的描述字及其所用的资源。创建一个套接口,代码如下: #include winsock.h SOCKET PASCAL FAR socket( intaf, int type, int protocol); Af是一个地址描述。目前仅支持AF_INET格式,也就是说ARPA Internet地址格式,Type是新套接口的类型描述,protocol:套接口所用的协议,如调用者不想指定,可用0指定,表示缺省。3.2.2 connect()函数本函数用于创建与指定外部端口的连接。s参数指定一个未连接的数据报或流类套接口。如套接口未被捆绑,则系统赋给本地关联一个唯一的值,且设置套接口为已捆绑。请注意若名字结构中的地址域为全零的话,则connect()将返回WSAEADDRNOTAVAIL错误。返回值:若无错误发生,则connect()返回0。否则的话,返SOCKET_ERROR错误,应用程序可通过WSAGetLastError()获取相应错误代码。创建一个连接,代码如下:#include winsock.h//调用套接字int PASCAL FAR connect( SOCKET s, conststructsockaddr FAR* name,intna

文档评论(0)

dart002 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档