ImageVerifierCode 换一换
格式:DOCX , 页数:18 ,大小:382.36KB ,
资源ID:8041942      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bingdoc.com/d-8041942.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(西工大计算机网络实验三文档格式.docx)为本站会员(b****4)主动上传,冰点文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰点文库(发送邮件至service@bingdoc.com或直接QQ联系客服),我们立即给予删除!

西工大计算机网络实验三文档格式.docx

1、 /客户地址长度 int iLen=0; /发送的数据长度 int iSend=0; /接收的数据长度 int ircv =0; /处世要发送给客户的信息 char buf20=I am a server; /接收来自用户的信息 char fromcli512; /客户和效劳器的SOCKET地址构造 struct sockaddr_in ser,cli; if(WSAStartup(MAKEWORD(2,2),&wsaData)!=0) coutfailed to load winsockendl; return 0; server waiting- /创立效劳器端帧听SOCKET oldSo

2、cket=socket(AF_INET,SOCK_STREAM,0); if(oldSocket=INVALID_SOCKET)socket() failed:WSAGetLastError() /以下是建立效劳器端的SOCKET地址构造 ser.sin_family=AF_INET; ser.sin_port=htons(5050); /使用系统指定的ip地址INADDR_ANYif(bind(oldSocket,(LPSOCKADDR)&ser,sizeof(ser)=SOCKET_ERROR)bind() failed: /进入侦听状态 if(listen(oldSocket,5)=SO

3、CKET_ERROR)listen() failed: /接收客户端的连接 iLen=sizeof(cli); newSocket=accept(oldSocket,(struct sockaddr*)&cli,&iLen);/产生一个新的SOCKET if(newSocket=INVALID_SOCKET) coutaccept() failed:/ return 0; /进入一个无限循环,等待客户发送数据 while(1) i+; /效劳器初始化接收缓冲区memset(fromcli,0,512); ircv=recv(newSocket,fromcli,sizeof(fromcli),0

4、); if(ircv=SOCKET_ERROR)rcv() failed: break; else if(ircv=0) break; else -效劳器接收的容为-fromclistdio.h#define DATA_BUFFER 512 SOCKET sClient; char ch;随着程序所在主机的地址改变而改变int SeriPort=5050; /从效劳器接收的数据的长度int iLen;int isnd; /接收缓冲区char bufDATA_BUFFER; /发送缓冲区char sndbufDATA_BUFFER; /效劳器端SOCKET地址构造struct sockaddr_

5、in ser; /接收/发送缓冲区的初始化memset(buf,0,sizeof(buf); memset(sndbuf,0,DATA_BUFFER); /填写要连接的效劳器地址信息ser.sin_family=AF_INET; ser.sin_port=htons(SeriPort); /建立客户端字节流式套接字sClient=socket(AF_INET,SOCK_STREAM,0); if(sClient=INVALID_SOCKET)socket() failed : /请求与效劳器建立连接/ coutset link if(connect(sClient,(struct sockad

6、dr *)&ser,sizeof(ser)=INVALID_SOCKET)connect() failed: else /向效劳器端发送数据while(1) cout i+;第isndbuf; isnd=send(sClient,sndbuf,sizeof(sndbuf),0); if(isnd=0) return 0; else if(isnd=SOCKET_ERROR) coutsend() failed: -客户端发送容为-sndbuf closesocket(sClient);本机上客户端与效劳器端通信结果如图:在两台效劳器上分别运行效劳器端和客户端,结果如图:UDP通信#includ

7、e stdafx.h#include #define buffer_length 512void main() WSADATA wsadata; SOCKET sSocket; int ilen; int irecv; char recv_bufbuffer_length; char send_bufbuffer_length; /效劳器和客户SOCKET地址构造struct sockaddr_in seradd,cliadd;wsadata)! printf(failed to load winsocketn); return; sSocket=socket(AF_INET,SOCK_DGR

8、AM,0); if(sSocket=INVALID_SOCKET)%dn,WSAGetLastError(); /初始化效劳器SOCKET地址构造seradd.sin_family=AF_INET; seradd.sin_port=htons(6666); if(bind(sSocket,(LPSOCKADDR)&seradd,sizeof(seradd)=SOCKET_ERROR)地址绑定时出错: int rua; scanf(%d, &rua); ilen=sizeof(cliadd); /初始化接收缓冲区 memset(recv_buf,0,sizeof(recv_buf); irecv

9、=recvfrom(sSocket,recv_buf,buffer_length,0,(struct sockaddr*)&cliadd,&ilen); if(irecv=SOCKET_ERROR)接收出错%dn else if(irecv=0) elsen%s-,recv_buf);Server received from Client ip:%s,port:%dn,inet_ntoa(cliadd.sin_addr),ntohs(cliadd.sin_port); /在此函数中cli为传出参数irecv=recvfrom(sSocket,recv_buf,buffer_length,0,(

10、struct sockaddr*)& if(irecv=SOCKET_ERROR) printf( int rua; return; else %s,send_buf); sendto(sSocket,send_buf,sizeof(send_buf),0,(struct sockaddr*)&cliadd,sizeof(cliadd); closesocket(sSocket);#define data_buffer 1024 SOCKET sclient; /效劳器地址、端口号 int Seriport=6666; char ch=qita /效劳器SOCKET地址构造长度int ilen

11、; /发送/接收数据大小int isend; /要发送给效劳器的数据char send_buf=hello,I am a client. char recv_bufdata_buffer; /效劳器端的SOCKET地址构造struct sockaddr_in seradd, cliadd;memset(recv_buf,0,sizeof(recv_buf); /字符数组初始化memset(ch,0,sizeof(ch);failed to load winsockn / 效劳器SOCKET地址构造初始化 seradd.sin_port=htons(Seriport); cliadd.sin_f

12、amily=AF_INET; cliadd.sin_port=htons(7777); sclient=socket(AF_INET,SOCK_DGRAM,0); if(sclient=INVALID_SOCKET)build socket failed!n if(bind(sclient,(LPSOCKADDR)&cliadd,sizeof(cliadd)=SOCKET_ERROR) /无连接不需要进展地址与套接字的绑定,直接发送数据即可ilen=sizeof(seradd); isend=sendto(sclient,send_buf,sizeof(send_buf),0,(struct

13、sockaddr *)&seradd,ilen); if(isend!=0&isend!=SOCKET_ERROR) /printf(data has been sent successfully!客户所发的数据为:%s, 字节数为:,send_buf,isend); else return;,ch); sendto(sclient,ch,sizeof(ch),0,(struct sockaddr*)&seradd,sizeof(seradd); irecv=recvfrom(sclient,recv_buf,data_buffer,0,(struct sockaddr*)&seradd,&

14、scanf( break;,inet_ntoa(seradd.sin_addr),ntohs(seradd.sin_port); closesocket(sclient);三、实验中出现的问题实验中,因为对TCP和UDP中的代码不熟悉,编译时也缺少了头文件,导致在编译时一直都没有通过,最后在教师的提醒下知道了错误所在,才能编译通过。思考题:问:与本机配置的网络ip地址还有localhost,相互有什么区别?答:localhost 是个域名,不是地址,它可以被配置为任意的 IP 地址,不过通常情况下都指向和 :1(ipv6)整个127.* 网段通常被用作 loopback 网络接口的默认地址,按

15、惯例通常设置为。这个地址在其他计算机上不能访问,就算你想访问,访问的也是自己,因为每台带有TCP/IP协议栈的设备根本上都有。本机地址通常指的是绑定在物理或虚拟网络接口上的IP地址,可供其他设备访问到。四、心得体会在本次试验之前,我对于socket编程并不了解,通过向同学请教以及从网上查找资料,对于这个问题我有了初步的了解,能够进展简单的应用,实现了本机以及联机的TCP协议以及UDP协议通讯。这次实验主要是通过改写代码实现两台计算机之间tcp/udp通信,做起来问题不大,但在代码的理解以及使用上有一定的难度,主要都是通过问同学来解决问题。通过这次实验,明白了计算机是如何进展tcp/udp通信,更加强化了理论知识。

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2