Windows网络编程(一)-WinSock编程_第1页
Windows网络编程(一)-WinSock编程_第2页
Windows网络编程(一)-WinSock编程_第3页
Windows网络编程(一)-WinSock编程_第4页
Windows网络编程(一)-WinSock编程_第5页
已阅读5页,还剩7页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

实用标准文案WinSock 编程实验报告班级:10网工三班 学生姓名:谢昊天 学号:1215134046实验目的和要求:实验目的1、了解WinsockAPI2、深刻领会 Winsock 编程原理3、学会使用 Winsock 创建简单的 TCP服务器以及客户机实验要求整个通信过程参照TCP/IP通信方式;实现整个TCP/IP通信的基本模型;完成基本的界面设计和事件响应;服务器可以同时和多个用户对话,可以同时恢复多个用户;保证信息传输的畅通;服务器可以依次和多个用户对话。实验内容与分析设计:编写一个基于某种 I/O方法的TCP服务器和 TCP客户机:能够实现模拟 C/S模型的通信方式,服务器端负责信息的接收, 并能够返回给客户端相应的消息; 客户机负责向服务器发送精彩文档实用标准文案信息。注:可以模拟教材 95页面向连接的 TCPSocket 应用程序编程实例。实验步骤与调试过程:1.打开Visualc++6.0编程环境;2.点击文件->新建、选择建立新的工程;选择Win32ConsoleApplication选项建立工程名为“服务器”的一个空工程;3.继续点击文件->新建、选择建立新的文件; 选择C++SourceFile 选项建立在“服务器”工程下的名为“服务器”的文件;4.编辑源程序->调试;(1)定义头文件和常量,声明两个 SOCKET对象,初始化 SOCKET环境;(2)创建用于监听的SOCKET环境;(3)设置服务器 SOCKET的地址,并绑定 socketserver 到本地地址,在socketserver 上进行监听,而后调用 accept()函数等待来自客户端的连接请求; (4)在服务器与客户机之间发送和接收数据; (5)当服务器程序接收到来自客户端的“ quit”字符串后,将退出循环并释放占用的资源;5.在组建选项中点击执行【服务器 .exe】(或者Ctrl+F5)执行程序;6.运行服务器查看服务器是否处于监听状态。7.再次打开Visualc++6.0编程环境;8.点击文件->新建、选择建立新的工程;选择Win32ConsoleApplication选项建立工程名为“客户端”的一个空工程;精彩文档实用标准文案9.继续点击文件->新建、选择建立新的文件; 选择C++SourceFile 选项建立在“客户端”工程下的名为“客户端”的文件;10.编辑源程序->调试;(1)在主程序中定义头文件和常量并声明变量,初始化 socket 环境并创建用于通信的 socket;(2)设置socket 地址并连接到服务器;(3)在服务器与客户机之间发送和接收数据; (4)当程序退出 while 循环时将释放占用的资源;在组建选项中点击执行【服务器.exe】(或者Ctrl+F5)执行程序;12. 运行服务器程序后再次运行客户端程序在客户端的命令窗口中执行 netstat-nao. 查看客户端程序的状态。实验结果:1.实现了在服务器与客户端之间发送和接受数据。2.运行服务器后,服务器处于监听状态实现了接受来自客户端的请求。4.实现模拟 C/S模型的通信方式,服务器端负责信息的接收, 并能够返回给客户端相应的消息;客户机负责向服务器发送信息。疑难小结:通过本次试验,了解了 socketb 编程的一些基础知识,学习到了用 socket 编写 服务器应精彩文档实用标准文案用程序。学习到了设置服务器 socket 地址,用socket 编写客户端应用程序,以及如何接受来自客户端的请求。从而使我对 TCPSocket 服务器应用程序有了进一步的了解,通过动手实现其 TCPSocket 服务器在TCP端口9990上进行监听,实现 CPSocket 客户端自动连接到指定服务器的 TCP端口9990,然后提示用户输入向服务器发送的字符串, 更加深刻的理解了 TCPSocket 服务器与客户端的特点。同时,在实验过程中,回顾书本上的理论知识,巩固了我的知识。主要算法和程序清单:服务器:#include<WINSOCK.H>#include<iostream>#pragmacomment(lib,"WS2_32.lib")#defineBUF_SIZE64intmain(intargc,TCHAR*argv[]){WSADATAwsd;SOCKETsServer;SOCKETsClient;intretVal;charbuf[BUF_SIZE];if(WSAStartup(MAKEWORD(2,2),&wsd)!=0)精彩文档实用标准文案{printf("WSAStartupfailed!\n");return1;}sServer=socket(AF_INET,SOCK_STREAM,IPPROTO_TCP);if(INVALID_SOCKET==sServer){printf("socketfailed!\n");WSACleanup();return-1;}SOCKADDR_INaddrServ;addrServ.sin_family=AF_INET;addrServ.sin_port=htons(9990);retVal = bind(sServer,(const structsockaddr*)&addrServ,sizeof(SOCKADDR_IN));if(SOCKET_ERROR==retVal){printf("bindfailed!\n");closesocket(sServer);WSACleanup();精彩文档实用标准文案return-1;}retVal=listen(sServer,1);if(SOCKET_ERROR==retVal){printf("listenfailed!\n");closesocket(sServer);WSACleanup();return-1;}printf("TCPServerstart...\n");sockaddr_inaddrClient;intaddrClientlen=sizeof(addrClient);sClient=accept(sServer,(sockaddrFAR*)&addrClient,&addrClientlen);if(INVALID_SOCKET==sClient){printf("acceptfailed!\n");closesocket(sServer);WSACleanup();return-1;}while(true)精彩文档实用标准文案{ZeroMemory(buf,BUF_SIZE);retVal=recv(sClient,buf,BUFSIZ,0);if(SOCKET_ERROR==retVal){printf("recvfailed!\n");closesocket(sServer);closesocket(sClient);WSACleanup();return-1;}SYSTEMTIMEst;GetLocalTime(&st);charsDateTime[30];sprintf(sDateTime,"%4d-%2d-%2d%2d%:2d:%2d",st.wYear,st.wMonth,st.wHour,st.wMinute,st.wSecond);printf("%s,Recv From Client[%s:%d]:%s\n",sDateTime,inet_ntoa(addrClient.sin_addr),addrClient.sin_port,buf);if(strcmp(buf,"quit")==0){retVal=send(sClient,"quit",strlen("quit"),0);精彩文档实用标准文案break;}else{charmsg[BUF_SIZE];sprintf(msg,"Messagereceived-%s",buf);retVal=send(sClient,msg,strlen(msg),0);if(SOCKET_ERROR==retVal){printf("sendfailed!\n");closesocket(sServer);closesocket(sClient);WSACleanup();return-1;}}}closesocket(sServer);closesocket(sClient);WSACleanup();system("pause");return0;精彩文档实用标准文案}客户端:#include<WinSOCK2.H>#include<string>#include<iostream>#pragmacomment(lib,"WS2_32.lib")#defineBUF_SIZE64intmain(intargc,TCHAR*argv[]){WSADATAwsd;SOCKETsHost;SOCKADDR_INservAddr;charbuf[BUF_SIZE];intretVal;if(WSAStartup(MAKEWORD(2,2),&wsd)!=0){printf("WSAStartupfailed!\n");return1;}sHost=socket(AF_INET,SOCK_STREAM,IPPROTO_TCP);精彩文档实用标准文案if(INVALID_SOCKET==sHost){printf("socketfailed!\n");WSACleanup();return-1;servAddr.sin_family=AF_INET;servAddr.sin_port=htons(9990);intsServerAddlen=sizeof(servAddr);}retVal=connect(sHost,(LPSOCKADDR)&servAddr,sizeof(servAddr));if(SOCKET_ERROR==retVal){printf("connectfailed!\n");closesocket(sHost);WSACleanup();return-1;}while(true){printf("Pleaseinputastringtosend:");std::stringstr;精彩文档实用标准文案std::getline(std::cin,str);ZeroMemory(buf,BUF_SIZE);strcpy(buf,str.c_str());retVal=send(sHost,buf,strlen(buf),0);if(SOCKET_ERROR==retVal){printf("sendfailed!\n");c

温馨提示

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

评论

0/150

提交评论