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

加入VIP,免费下载
 

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

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

下载须知

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

版权提示 | 免责声明

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

西工大计算机网络实验三.doc

1、实 验 报 告实验名称-SOCKET 编程一、实验目的(1)加深对 TCP 和 UDP 的理解;(2)实现两台计算机之间 TCP/UDP 通信。二、实验过程原理:socket 是在应用层和传输层之间的一个抽象层,它把 TCP/IP 层复杂的操作抽象为几个简单的接口供应用层调用以实现进程在网络中通信。如下图所示:TCP 通信原理如图:代码:服务器端:#pragma comment(lib, “WS2_32.lib“)#include#include#includeusing namespace std;int main()int i=0;WSADATA wsaData;SOCKET oldSoc

2、ket,newSocket;/客户地址 长度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),#define DATA_BUFFER 512int main()WSADATA wsaData;SOCKET sClient;char ch;int i=0;ch

3、ar *Serip=“192.168.8.58“;/随着程序所在主机的地址改变而改变int SeriPort=5050;/从服务器接收的 数据的 长度int iLen;/发送的数 据长度int isnd;/接收缓冲 区char bufDATA_BUFFER;/发送缓冲 区char sndbufDATA_BUFFER;/服务器端 SOCKET 地址结构struct sockaddr_in ser;/接收/发送缓冲区的初始化memset(buf,0,sizeof(buf);memset(sndbuf,0,DATA_BUFFER);if(WSAStartup(MAKEWORD(2,2),isnd=s

4、end(sClient,sndbuf,sizeof(sndbuf),0);if(isnd=0)return 0;else if(isnd=SOCKET_ERROR)cout#include #include #define buffer_length 512#pragma comment(lib, “WS2_32.lib“)void main()WSADATA wsadata;SOCKET sSocket;int ilen;int irecv;char recv_bufbuffer_length;char send_bufbuffer_length;/服务器和客 户 SOCKET 地址结构st

5、ruct sockaddr_in seradd,cliadd;if(WSAStartup(MAKEWORD(2,2),return;sSocket=socket(AF_INET,SOCK_DGRAM,0);if(sSocket=INVALID_SOCKET)printf(“socket() failed:%dn“,WSAGetLastError();return;/初始化服 务器 SOCKET 地址结构seradd.sin_family=AF_INET;seradd.sin_port=htons(6666);/seradd.sin_addr.s_addr=htonl(INADDR_ANY);s

6、eradd.sin_addr.s_addr= inet_addr(“0.0.0.0“);if(bind(sSocket,(LPSOCKADDR)int rua;scanf(“%d“, return;ilen=sizeof(cliadd);/初始化接收 缓冲区memset(recv_buf,0,sizeof(recv_buf);irecv=recvfrom(sSocket,recv_buf,buffer_length,0,(struct sockaddr*)if(irecv=SOCKET_ERROR)printf(“接收出错%dn“,WSAGetLastError();int rua;scanf

7、(“%d“, return;else if(irecv=0)return;elseprintf(“n%s-“,recv_buf);printf(“Server received from Client ip:%s,port:%dn“,inet_ntoa(cliadd.sin_addr),ntohs(cliadd.sin_port);while(1)/在此函 数中 cli 为传出参数irecv=recvfrom(sSocket,recv_buf,buffer_length,0,(struct sockaddr*)if(irecv=SOCKET_ERROR)printf(“接收出错%dn“,WSA

8、GetLastError();int rua;scanf(“%d“, return;else if(irecv=0)break;elseprintf(“n%s-“,recv_buf);printf(“Server received from Client ip:%s,port:%dn“,inet_ntoa(cliadd.sin_addr),ntohs(cliadd.sin_port);scanf(“%s“,send_buf);sendto(sSocket,send_buf,sizeof(send_buf),0,(struct sockaddr*)closesocket(sSocket);WSA

9、Cleanup();客户端:#include “stdafx.h“#include#include #define data_buffer 1024void main()WSADATA wsadata;SOCKET sclient;/服务器地址、端口 号char * serip=“192.168.8.58“;int Seriport=6666;char ch=“qita“;/服务器 SOCKET 地址结构长度int ilen;/发送/接收数据大小int isend;int irecv;/要发送给 服务器的数据char send_buf=“hello,I am a client.“;char r

10、ecv_bufdata_buffer;/服务器端的 SOCKET 地址结构struct sockaddr_in seradd, cliadd;/初始化接收 缓冲区memset(recv_buf,0,sizeof(recv_buf);/字符数组 初始化memset(ch,0,sizeof(ch);if(WSAStartup(MAKEWORD(2,2),return;/ 服务器 SOCKET 地址结构初始化seradd.sin_family=AF_INET;seradd.sin_port=htons(Seriport);seradd.sin_addr.s_addr=inet_addr(serip)

11、;cliadd.sin_family=AF_INET;cliadd.sin_port=htons(7777);cliadd.sin_addr.s_addr=inet_addr(“0.0.0.0“);sclient=socket(AF_INET,SOCK_DGRAM,0);if(sclient=INVALID_SOCKET)printf(“build socket failed!n“);return;if(bind(sclient,(LPSOCKADDR)return;/无连接不需要 进行地址 与套接字的绑定,直接发送数据即可ilen=sizeof(seradd);isend=sendto(sc

12、lient,send_buf,sizeof(send_buf),0,(struct sockaddr *)if(isend!=0printf(“客户所发的数据为:%s, 字节数为:%dn“,send_buf,isend);else return;while(1)scanf(“%s“,ch);sendto(sclient,ch,sizeof(ch),0,(struct sockaddr*)irecv=recvfrom(sclient,recv_buf,data_buffer,0,(struct sockaddr*)if(irecv=SOCKET_ERROR)printf(“接收出错%dn“,WS

13、AGetLastError();int rua;scanf(“%d“, return;else if(irecv=0)break;elseprintf(“n%s-“,recv_buf);printf(“Server received from Client ip:%s,port:%dn“,inet_ntoa(seradd.sin_addr),ntohs(seradd.sin_port);closesocket(sclient);WSACleanup();本机上客户端与服务器端通信结果如图:在两台服务器上分别运行服务器端和客户端,结果如图:三、实验中出现的问题实验中,因为对 TCP 和 UDP

14、中的代码不熟悉,编译时也缺少了头文件,导致在编译时一直都没有通过,最后在老师的提醒下知道了错误所在,才能编译通过。思考题:问:127.0.0.1 与本机配置的网络 ip 地址还有 localhost,相互有什么区别?答:localhost 是个域名,不是地址,它可以被配置为任意的 IP 地址,不过通常情况下都指向 127.0.0.1(ipv4)和 :1(ipv6)整个 127.* 网段通常被用作 loopback 网络接口的默认地址,按惯例通常设置为 127.0.0.1。这个地址在其他计算机上不能访问,就算你想访问,访问的也是自己,因为每台带有 TCP/IP 协议栈的设备基本上都有 localhost/127.0.0.1。本机地址通常指的是绑定在物理或虚拟网络接口上的 IP 地址,可供其他设备访问到。四、心得体会在本次试验之前,我对于 socket 编程并不了解,通过向同学请教以及从网上查找资料,对于这个问题我有了初步的了解,能够进行简单的应用,实现了本机以及联机的 TCP 协议以及 UDP 协议通讯。这次实验主要是通过改写代码实现两台计算机之间 tcp/udp 通信,做起来问题不大,但在代码的理解以及使用上有一定的难度,主要都是通过问同学来解决问题。通过这次实验,明白了计算机是如何进行 tcp/udp 通信,更加强化了理论知识。

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报