网络实践课程设计报告

上传人:zhu****ng 文档编号:157462733 上传时间:2022-09-29 格式:DOC 页数:6 大小:28.52KB
收藏 版权申诉 举报 下载
网络实践课程设计报告_第1页
第1页 / 共6页
网络实践课程设计报告_第2页
第2页 / 共6页
网络实践课程设计报告_第3页
第3页 / 共6页
资源描述:

《网络实践课程设计报告》由会员分享,可在线阅读,更多相关《网络实践课程设计报告(6页珍藏版)》请在装配图网上搜索。

1、计算机网络实践设计报告学院: 计算机 班级: 成教2012业余 教师: 李领治 学号: 姓名: 成绩: 实验目的:掌握Winsock2.0套接字编程技术的基本方法。实验要求:运用TCP/IP Winsock2.0套接字编程技术,使用VC编写一个面向连接通信的服务端程序与客户端程序,服务器先与端口3000绑定,然后等待客户连接,连接成功后就可与客户端互相收、发信息。交互中,通信任一方只要发送 bye, 通信过程便自动结束。实验源程序:服务器程序:#pragma comment (lib, Ws2_32.lib) /Winsock 2 函数库/-#include #include #include

2、 /Winsock 2 函数头文件/-bool InitSocket(); int main(int, char*)struct sockaddr addr;int len;bool over;char msg255;SOCKET sock, sersock;if( !InitSocket() ) return 0; /加载初始化 Winsock 2 动态链接库 Ws2_32.dllsock = socket( AF_INET,SOCK_STREAM,0 ); /创建监听的流套接口 if( sock=INVALID_SOCKET ) /不能创建,返回printf(不能创建Socket!n);g

3、etch();WSACleanup( ); /卸载Winsock 2动态链接库Ws2_32.dllreturn 0;/设置本服务器IP地址和端口号(sockaddr_in*)&addr)-sin_family = AF_INET; /AF_INET:使用Internet 协议(sockaddr_in*)&addr)-sin_port = htons(3000); /服务器端口号3000(sockaddr_in*)&addr)-sin_addr.s_addr = inet_addr(127.1.1.1); /主机地址/把套接口与地址绑定bind(sock,&addr,sizeof(addr);/

4、服务进程准备接收套接口上的连接请求listen(sock,1); /监听方式,准备接收连接请求:1-允许等待队列中的连接请求1个/接受网络连接,生成新的套接口sersock标识这一连接printf(等待客户连接!n);len = sizeof(addr);sersock = accept( sock,&addr,&len );/从等待队列中检取连接请求,如队列空则进程阻塞等待;/如不空,则接受客户连接,使用返回连接套接口sersock与该客户连接。/原套接口sock可继续监听其它客户请求。if(sersock=INVALID_SOCKET) /若套接口sersock 出错DWORD err =

5、 WSAGetLastError();char txt100;sprintf(txt,error when accept!-errno:%d,err);printf(txt);getch();closesocket(sock); /关闭监听套接口sockWSACleanup( ); /卸载Winsock 2动态链接库Ws2_32.dllreturn 0;printf(有客户连接!n输入bye通信结束n);over = false; /状态设置为未结束/与客户交互会话,直至任一方打入bye后退出循环doprintf(n等待对方用户输入信息.);len = recv ( sersock,msg,2

6、00,0 ); /接收对方信息printf(n对方输入:%s,msg); /显示对方信息if( strcmp(msg,bye)=0 ) /若对方信息为bye就结束通信break;printf(n本方回答:);gets(msg); /键入本方信息if( strcmp(msg,bye)=0 ) over = true; /若本方发出bye就结束通信send ( sersock,msg,strlen(msg)+1,0 ); /将本方键入信息发给对方 while( !over );closesocket(sersock); /关闭连接套接口closesocket(sock); /关闭监听套接口prin

7、tf(nn会话结束,按任一键返回n);getch();WSACleanup( ); /卸载 Winsock 2 动态链接库Ws2_32.dllreturn 0;/-/下述函数加载初始化Winsock 2 动态链接库 Ws2_32.dllbool InitSocket() WORD wVersionRequested;WSADATA wsaData;int err;wVersionRequested = MAKEWORD( 2, 0 ); /Wiinsock2.0版err = WSAStartup( wVersionRequested, &wsaData ); /加载if ( err != 0

8、) /没有Winsock 2 动态链接库 Ws2_32.dllprintf(没有Windows Socket动态库!n);getch();return false;if ( LOBYTE( wsaData.wVersion ) != 2 | /不是Winsock 2.0HIBYTE( wsaData.wVersion ) != 0 ) printf(需要Windows Socket 2!n);getch();WSACleanup( ); /卸载 Winsock 动态链接库return false;return true;客户端程序:#pragma comment (lib, Ws2_32.li

9、b) /Winsock 2 函数库/-#include #include #include #include #include /Winsock 2 函数头文件/-bool InitSocket(); int main(int , char*)int type;SOCKET sock; struct sockaddr addr; int len,portno;int err;char msg255;bool over;if( !InitSocket() ) return 0; /加载初始化 Winsock 2 动态链接库 Ws2_32.dlltype = SOCK_STREAM; sock =

10、 socket( AF_INET,type,0 ); /创建客户端流套接口if( sock=INVALID_SOCKET ) /不能创建,返回printf(不能创建Socket!);getch();WSACleanup( ); /卸载Winsock 2动态链接库Ws2_32.dllreturn 0; / 以下输入对方服务器IP地址(sockaddr_in*)&addr)-sin_family = AF_INET; / Internet 协议printf(输入服务器地址(x.x.x.x):); gets(msg);(sockaddr_in*)&addr)-sin_addr.s_addr = in

11、et_addr(msg); / inet_addr()将点分十进制IP地址串转换为u_long类型/ 以下输入对方服务器端口号printf(输入对方服务器端口号(3000):);gets(msg);if(msg0=0x00) portno=3000; /如果直接回车,就采用默认端口号3000else portno=atoi(msg);(sockaddr_in*)&addr)-sin_port = htons( portno ); / htons():从短整数的主机字节顺序转换为网络字节顺序/ 以下与对方服务器连接/ 在使用面向连接协议 (TCP)时,必须与服务器连接成功后,/ 才可通信;另外,

12、若使用无连接的协议(UDP) ,则可以直/ 接向对方发数据、无需连接, 但面向连接收、发数据时用/ 的send()和recv()要换成无连接用的函数 sendto()和recvfrom() printf(与服务器连接.!);len = sizeof(addr);err = connect( sock,(sockaddr*)&addr,len ); /连接if( err=SOCKET_ERROR ) /若连接失败printf(连接失败!);getch();WSACleanup( ); /卸载Winsock 2动态链接库Ws2_32.dllreturn 0;printf(成功连接到服务器!n若输入

13、bye则通信结束n);over = false; /状态设置为未结束/ 以下为客户与服务器会话交互,直至输入或收到bye,则/ 退出循环,结束doprintf(nn本方输入:);gets(msg);if( strcmp(msg,bye)=0 ) over = true; /输入bye则结束通信send ( sock,msg,strlen(msg)+1,0); /发送信息if(over) break; printf(等待服务器响应.n);len = recv ( sock,msg,200,0 ); /接收信息,接收缓冲区长200 msglen=0; /在接收串变量尾添结束符0 if( strcm

14、p(msg,bye)=0 ) over = true; /收到bye则结束通信printf(对方回答:);printf(msg); /显示接收信息while( !over );/以下关闭套接口,卸载Winsock 2动态链接库closesocket(sock); /关闭客户套接口printf(n会话结束,按任一键返回n);getch();WSACleanup( ); /卸载Winsock 2动态链接库Ws2_32.dllreturn 0;/-/下述函数加载初始化Winsock 2 动态链接库 Ws2_32.dllbool InitSocket() WORD wVersionRequested;

15、WSADATA wsaData;int err;wVersionRequested = MAKEWORD( 2, 0 ); /Wiinsock2.0版err = WSAStartup( wVersionRequested, &wsaData ); /加载if ( err != 0 ) /没有Winsock 2 动态链接库 Ws2_32.dllprintf(没有Windows Socket动态库!n);getch();return false;if ( LOBYTE( wsaData.wVersion ) != 2 | /不是Winsock 2.0 HIBYTE( wsaData.wVersion ) != 0 ) printf(需要Windows Socket 2!n);getch();WSACleanup( ); /卸载 Winsock 动态链接库return false;return true;

展开阅读全文
温馨提示:
1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
2: 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
3.本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!