網络程序设计上机考题目.docVIP

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

《网络程序设计》实验报告 学号: 031003102 姓名: 陈秋菊 年级: 2010级 学院: 数计学院 专业: 信息安全 实验时间:2012.12.17 任课教师:张浩 6 实验六 网络聊天软件的设计与实现2012 6.1 实验目的 综合运用所学知识,设计并实现局域网内聊天软件。 6.2 实验原理 (1)UDP套接口编程原理: UDP进程通信时不需要客户与服务器进行建立连接,使用了sendto函数给服务器发送数据报,参数必须指定目的地的地址; 服务器不接受来自客户的连接,调用recvfrom函数,等待来自某个客户的数据到达recvfrom所接收的数据报以及客户的协议地址,一同返回给客户进程,服务器根据返回地址,把响应发给相应的客户。 多路复用 内核发现进程指定的一个或多个I/O条件就绪,就通知进程:这种方式称为多路复用 调用select/poll,阻塞在这两个系统调用中的某一个之上,而不是阻塞在I/O系统调用上,阻塞于select调用,等待数据报套接口变为可读。当select返回套接口可读时,调用recvfrom把所读数据报拷贝到应用进程缓冲区,其优势在于可以等待多个描述字的就绪。 信号驱动I/O模型: 内核在描述字就绪时,发送SIGIO信号通知进程: 6.3 实验仪器(硬件设备与软件) (1) PC 机(已安装Windows 操作系统); (2) Linux 操作系统软件(RedHat)或者VMware 已安装的系统文件包; (3) VMware 软件和SSH 客户端软件(SSH Secure Shell)。 6.4 实验内容与步骤 6.4.1 上机测试部分 要求: 使用套接口编程(TCP 或UDP 协议自选),实现通信双方的文字交流。 1. 通信双方均可随时收发信息:1 对1 信息交互 2. 一方可同时与多方进行信息交流:1 对多 信息交互 3. 分组内多方信息交流:组内信息交互 4. 协议不限(TCP 或者UDP)、可采用多路复用、信号驱动IO、多播等技术 6.4.2实验代码以及结果显示 1 对1 信息交互的代码: 选择UDP协议,采用select函数多路复用的方式实现。SSH2个窗口的代码一样,唯一不同的是其端口号不一样。 int ret,n; fd_set fds; #define BUFFSIZE 1024 char buff[BUFFSIZE]; struct sockaddr_in remote; int len; while(1) { FD_ZERO(fds); FD_SET(sock,fds); FD_SET(1,fds); ret=select(sock+1,fds,NULL,NULL,NULL); if(ret0) { perror(select:); return -1; } if(ret) { if(FD_ISSET(sock,fds)) { bzero(buff,BUFFSIZE); n=recvfrom(sock,buff,BUFFSIZE,0,(struct sockaddr*)remote,len); buff[n]=0; printf(recv:%s\n,buff); //printf(recv from:%s\nmsg:%s\n,inet_ntoa(remote.sin_addr),buff); }//sock } //ret if(FD_ISSET(1,fds)) { if(FD_ISSET(sock,fds)) { bzero(buff,BUFFSIZE); n=recvfrom(sock,buff,BUFFSIZE,0,(struct sockaddr*)remote,len); buff[n]=0; printf(recv:%s\n,buff); //printf(recv from:%s\nmsg:%s\n,inet_ntoa(remote.sin_addr),buff); }//sock bzero(buff,BUFFSIZE); fgets(buff,BUFFSIZE,stdin); if(sendto(sock,buff,strlen(buff),0,(struct sockaddr*)to,sizeof(to))0) { perror(sendto:); return -1; } printf(send:%s\n,buff); } //stdin }//while return 0; } 端口3333发送时运行结果: 端口3334接收时运行结果

文档评论(0)

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

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

1亿VIP精品文档

相关文档