计算机网络原理实验三winsock套接字编程实验报告.doc_第1页
计算机网络原理实验三winsock套接字编程实验报告.doc_第2页
计算机网络原理实验三winsock套接字编程实验报告.doc_第3页
计算机网络原理实验三winsock套接字编程实验报告.doc_第4页
计算机网络原理实验三winsock套接字编程实验报告.doc_第5页
已阅读5页,还剩1页未读 继续免费阅读

下载本文档

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

文档简介

实验三、WINSOCK套接字编程实验报告序号: 姓名: 刘易 学号: 20101150040 成绩 指导老师: 1实验目的:用C或JAVA语言编写客户端、服务器程序,实现基于TCP或UDP的网络通信数据传输服务,熟悉基于TCP或UDP的Socket编程原理。2实验环境:建立在TCP/IP 网络体系结构之上计算机网络实验环境。各计算机除了安装TCP/IP 软件外,还安装了TCP/IP 开发系统。计算机具备Windows环境中套接字socket 的编程接口功能,可为用户提供全网范围的进程通信功能。3实验指导:参见套接字编程实验指导4实验步骤(1)运行指导书中给出的参考程序,分析实验结果,并回答问题(1)-(3)(2)根据给定参考程序修改代码,完善修改服务器和客户端的功能。并回答问题(4)-(5)5实验结果分析(1) 为什么在服务器和客户端要包含winsock2.h文件?(2) 为什么在服务器和客户端程序中要加入#pragma comment(lib,ws2_32.lib) 语句,如果不加会出现什么问题?(3) 为什么在服务器和客户端程序中要使用WSAStartup函数,如果不用,程序会有什么问题?(4) 修改后的程序完成实现了什么功能,附上修改后的源代码。(修改或填加的代码用波浪线标注,并填加注释),并附上实验截图客户端改变的代码: for(;) memset(buf, 0, 1024); printf(Please input a line to server:); scanf(%s,&buf); rval = send(fd, buf, strlen(buf) + 1,0); if(rval 0) printf(Write error!);if(rval=recv(fd,buf,sizeof(buf),0)0)perror(reading stream message);if(rval=0)printf(server said :%sn,buf);服务器端修改的代码: for(;)memset(buf, 0, sizeof(buf); if ( (rval = recv(msgsock, buf, sizeof(buf),0) );scanf(%s,&buf);rval=send(msgsock,buf,strlen(buf)+1,0); (5) 请详细说明此实验在设计及运行时遇到的问题和解决办法,及实验体会及建议。6. 给出客户端和服务器端详细代码和注释。客户端总体代码: WSADATA wsaData; int err = 0 ,rval = 0 ; SOCKET fd; struct sockaddr_in servaddr; struct hostent* hp; char buf1024 = ; wVersionRequested = MAKEWORD( 2, 2 ); err = WSAStartup( wVersionRequested, &wsaData ); if ( err != 0 ) return -1; if (fd = socket(AF_INET, SOCK_STREAM, 0) h_addr,hp-h_length); memset(servaddr.sin_zero, 0, sizeof(servaddr.sin_zero); rval = connect(fd, (sockaddr*)&servaddr, sizeof(servaddr); if (rval 0) printf(Can not create connect!); exit(3); else for(;) memset(buf, 0, 1024); printf(Please input a line to server:); scanf(%s,&buf); rval = send(fd, buf, strlen(buf) + 1,0); if(rval 0) printf(Write error!);if(rval=recv(fd,buf,sizeof(buf),0)0)perror(reading stream message);if(rval=0)printf(server said :%sn,buf); closesocket(fd);exit(5); 服务器端总体代码:int _tmain(int argc, _TCHAR* argv) SOCKET sock, msgsock; int length = 0; struct sockaddr_in server; struct sockaddr tcpaddr; char buf1024 = ; int rval= 0, len= 0, err = 0; WORD wVersionRequested; WSADATA wsaData; wVersionRequested = MAKEWORD( 2, 2 ); err = WSAStartup( wVersionRequested, &wsaData ); if ( err != 0 ) return -1; sock = socket(AF_INET, SOCK_STREAM, 0); if (sock 0) perror(opening stream socket); exit(1); server.sin_family = AF_INET; server.sin_port = htons(MYPORT); server.sin_addr.s_addr = inet_addr(SERVER_IP_ADDR); memset(server.sin_zero, 0, sizeof(server.sin_zero); rval = bind(sock, (struct sockaddr *)&server, sizeof(server); if (rval 0) perror(binding stream socket); exit(1); length = sizeof(server); if (getsockname(sock, (struct sockaddr *)&server, &length) 0) perror(getting socket name); exit(1); printf(socket port #%dn, ntohs(server.sin_port); listen(sock, 5); len = sizeof(struct sockaddr); do msgsock = accept(sock, (struct sockaddr *)&tcpaddr, (int *)&len); if (msgsock = -1) perror(accept); else for(;)memset(buf, 0, sizeof(buf); if ( (rval = recv(

温馨提示

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

评论

0/150

提交评论