- 1、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 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接收时运行结果
您可能关注的文档
最近下载
- 成人氧气吸入疗法护理-中华护理学会团体标准.pptx VIP
- 2025年1月浙江浙江省普通高校招生信息技术选考真题卷.doc VIP
- 网络与信息安全管理员职业技能竞赛理论考试题及答案 .pdf VIP
- 建筑工程图集 01K403、01(03)K403:风机盘管安装(含2003年局部修改版).pdf VIP
- 工学一体化课程《小型网络管理与维护》任务2单元7教学单元活动方案.docx VIP
- 工学一体化课程《小型网络管理与维护》任务2单元6教学单元活动方案.docx VIP
- 中医护理门诊工作制度、岗位职责、安全管理制度.docx VIP
- 各类工作票和操作票模板.pdf VIP
- 公卫执业医师《学校、儿童少年卫生学必看考点》考试题.doc VIP
- 人工智能时代高职综合英语课程思政的融合与创新.pdf VIP
文档评论(0)