资源描述:
《网络实践课程设计报告》由会员上传分享,免费在线阅读,更多相关内容在应用文档-天天文库。
1、计算机网络实践设计报告学院:计算机班级:成教2012业余教师:李领治学号:姓名:成绩:实验目的:掌握Winsock2.0套接字编程技术的基本方法。实验要求:运用TCP/IPWinsock2.0套接字编程技术,使用VC编写一个面向连接通信的服务端程序与客户端程序,服务器先与端口3000绑定,然后等待客户连接,连接成功后就可与客户端互相收、发信息。交互中,通信任一方只要发送bye,通信过程便自动结束。实验源程序:服务器程序:#pragmacomment(lib,"Ws2_32.lib")//Winsock2函数库//-------------------------
2、------------------------------#include#include#include//Winsock2函数头文件//-------------------------------------------------------boolInitSocket();intmain(int,char**){structsockaddraddr;intlen;boolover;charmsg[255];SOCKETsock,sersock;if(!InitSocket())return0
3、;//加载初始化Winsock2动态链接库Ws2_32.dllsock=socket(AF_INET,SOCK_STREAM,0);//创建监听的流套接口if(sock==INVALID_SOCKET){//不能创建,返回printf("不能创建Socket!");getch();WSACleanup();//卸载Winsock2动态链接库Ws2_32.dllreturn0;}//设置本服务器IP地址和端口号((sockaddr_in*)&addr)->sin_family=AF_INET;//AF_INET:使用Internet协议((sockaddr_i
4、n*)&addr)->sin_port=htons(3000);//服务器端口号3000((sockaddr_in*)&addr)->sin_addr.s_addr=inet_addr("127.1.1.1");//主机地址//把套接口与地址绑定bind(sock,&addr,sizeof(addr));//服务进程准备接收套接口上的连接请求listen(sock,1);//监听方式,准备接收连接请求:1--允许等待队列中的连接请求1个//接受网络连接,生成新的套接口sersock标识这一连接printf("等待客户连接!");len=sizeof(addr
5、);sersock=accept(sock,&addr,&len);//从等待队列中检取连接请求,如队列空则进程阻塞等待;//如不空,则接受客户连接,使用返回连接套接口sersock与该客户连接。//原套接口sock可继续监听其它客户请求。if(sersock==INVALID_SOCKET){//若套接口sersock出错DWORDerr=WSAGetLastError();chartxt[100];sprintf(txt,"errorwhenaccept!---errno:%d",err);printf(txt);getch();closesocket(so
6、ck);//关闭监听套接口sockWSACleanup();//卸载Winsock2动态链接库Ws2_32.dllreturn0;}printf("有客户连接!输入bye通信结束");over=false;//状态设置为未结束//与客户交互会话,直至任一方打入bye后退出循环do{printf("等待对方用户输入信息......");len=recv(sersock,msg,200,0);//接收对方信息printf("对方输入:%s",msg);//显示对方信息if(strcmp(msg,"bye")==0)//若对方信息为bye就结束通信br
7、eak;printf("本方回答:");gets(msg);//键入本方信息if(strcmp(msg,"bye")==0)over=true;//若本方发出bye就结束通信send(sersock,msg,strlen(msg)+1,0);//将本方键入信息发给对方}while(!over);closesocket(sersock);//关闭连接套接口closesocket(sock);//关闭监听套接口printf("会话结束,按任一键返回");getch();WSACleanup();//卸载Winsock2动态链接库Ws2_32.dllr
8、eturn0;}//--