实验三、winsock套接字编程实验报告

实验三、winsock套接字编程实验报告

ID:35222080

大小:96.00 KB

页数:6页

时间:2019-03-22

实验三、winsock套接字编程实验报告_第1页
实验三、winsock套接字编程实验报告_第2页
实验三、winsock套接字编程实验报告_第3页
实验三、winsock套接字编程实验报告_第4页
实验三、winsock套接字编程实验报告_第5页
资源描述:

《实验三、winsock套接字编程实验报告》由会员上传分享,免费在线阅读,更多相关内容在应用文档-天天文库

1、实验三、WINSOCK套接字编程实验报告序号:姓名:学号:成绩:指导老师:1.实验目的:用C或JAVA语言编写客户端、服务器程序,实现基于TCP或UDP的网络通信数据传输服务,熟悉基于TCP或UDP的Socket编程原理。2.实验环境:建立在TCP/IP网络体系结构之上计算机网络实验环境。各计算机除了安装TCP/IP软件外,还安装了TCP/IP开发系统。计算机具备Windows环境中套接字socket的编程接口功能,可为用户提供全网范围的进程通信功能。3.实验指导:参见套接字编程实验指导4.实验步骤(1)运行指导书中给出的参考程序,分析实验结果,并回

2、答问题(1)-(3)(2)根据给定参考程序修改代码,完善修改服务器和客户端的功能。并回答问题(4)-(5)5.实验结果分析(1)为什么在服务器和客户端要包含winsock2.h文件?答:windowssocket的头文件,不包含该头文件,关于socket编程的结构和函数等都不能被调用。(2)为什么在服务器和客户端程序中要加入#pragmacomment(lib,"ws2_32.lib")语句,如果不加会出现什么问题?答:#pragma comment(lib,"Ws2_32.lib")表示链接Ws2_32.lib这个库。和在工程设置里写上链入Ws2_

3、32.lib的效果一样,不过这种方法写的程序别人在使用你的代码的时候就不用再设置工程settings了。如果没有这个(3)为什么在服务器和客户端程序中要使用WSAStartup函数,如果不用,程序会有什么问题?答:使用Socket的程序在使用Socket之前必须调用WSAStartup函数。该函数的第一个参数指明程序请求使用的Socket版本,其中高位字节指明副版本、低位字节指明主版本;操作系统利用第二个参数返回请求的Socket的版本信息。当一个应用程序调用WSAStartup函数时,操作系统根据请求的Socket版本来搜索相应的Socket库,然

4、后绑定找到的Socket库到该应用程序中。以后应用程序就可以调用所请求的Socket库中的其它Socket函数了。该函数执行成功后返回0。如果不用,应用程序将无法调用socket函数。(1)修改后的程序完成实现了什么功能,附上修改后的源代码。(修改或填加的代码用波浪线标注,并填加注释),并附上实验截图实现功能:在有双方IP的情况下可以实现窗体界面的交互式聊天功能,可以中英文符号数字随意输入。截图:客户端:服务器:客户端代码:#include"stdafx.h"#include#include#include

5、rno.h>#include#include#include#include#include#pragmacomment(lib,"ws2_32.lib")#definePORT3490/*客户机连接远程主机的端口*/#defineMAXDATASIZE100/*每次可以接收的最大字节*/int_tmain(intargc,_TCHAR*argv[]){WORDwVersionRequested;WSADATAwsaData;interr=0

6、,rval=0;SOCKETfd;structsockaddr_inservaddr;structhostent*hp;charbuf[1024]="";wVersionRequested=MAKEWORD(2,2);err=WSAStartup(wVersionRequested,&wsaData);if(err!=0)return-1;if((fd=socket(AF_INET,SOCK_STREAM,0))<0){printf("Cannotcreatesocket!");exit(2);}servaddr.sin_family=AF_INET

7、;servaddr.sin_port=htons(PORT);hp=gethostbyname("113.55.38.221");//输入服务器ip地址//根据服务器的网络计算//机名称得到其IP地址等信息memcpy((char*)&servaddr.sin_addr,(char*)hp->h_addr,hp->h_length);memset(servaddr.sin_zero,0,sizeof(servaddr.sin_zero));//和服务器创建连接rval=connect(fd,(sockaddr*)&servaddr,sizeof(se

8、rvaddr));if(rval<0){//创建连接失败printf("Cannotcreateconnec

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。