计算机网络原理实验三

计算机网络原理实验三

ID:41107778

大小:84.50 KB

页数:6页

时间:2019-08-16

计算机网络原理实验三_第1页
计算机网络原理实验三_第2页
计算机网络原理实验三_第3页
计算机网络原理实验三_第4页
计算机网络原理实验三_第5页
资源描述:

《计算机网络原理实验三》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库

1、实验三、套接字编程序号:姓名:学号:成绩一.实验目的:两人一组,编写一个客户端、服务器程序,掌握Socket编程原理。二.实验环境:连入局域网络的主机一台。三.实验指导:SocketAPI是实现进程间通信的一种编程设施,也是一种为进程间提供底层抽象的机制。理解socket编程模型及其原理。四.运行结果:客户端服务端五.实验分析,回答下列问题。a.运行指导书中的程序,并修改服务器的功能(自己思考),改写成多线程web服务器(选作),附上源代码,并加关键代码注释。b.给出程序调试和运行的截图。c.回答下列问题:(1)

2、为什么在服务器和客户端要包含winsock2.h文件?答:网络编写程序必须要有头文件,否则编译时会出错。(2)为什么在服务器和客户端程序中要加入#pragmacomment(lib,"ws2_32.lib")语句,如果不加会出现什么问题?答:其功能是连接“ws2_32.lib”这个库,如果没有这个语句,就无法得到相关网络API的支持,编译的时候就会出错。(1)为什么在服务器和客户端程序中要使用WSAStartup函数,如果不用程序会有什么问题?答:WSAStartup函数是应用程式呼叫到WindowsSocket

3、sDLL函式中的第一个,只有呼叫成功后,才可以再呼叫其他WindowsSocketsDLL的函式。如果不用这个函数,编译将会中止,无法继续运行。(2)如果程序在TurboC环境下运行,在服务器和客户程序中还需要上面的内容吗?答:不需要。TurboC将文本编辑、程序编译、连接以及程序运行一体化,大大方便了程序的开发。(3)如果服务器程序中没有memset(server.sin_zero,0,sizeof(server.sin_zero));语句,程序会出现什么错误,为什么?答:对程序运行没有影响,这个语句的作用只是

4、申请内存初始化,这个软件可以不用到这个语句。(4)如果先运行客户端程序,程序会有什么现象,为什么会有这一现象?答:会显示“Cannotcreateconnect!”并且无法进行输入。因为如果相应的服务端没有打开,客户端将不会找到它建立链接。(5)如果服务器程序所在计算机没有连接网络,程序会发生什么错误?我们捕获到什么错误信息?答:无法进行正常测试,服务端会显示“bindingstreamsocket:Noerror”。(6)上述服务器是串行处理多个客户端的请求,如何该成并发处理的服务器?答:调用accept和fo

5、rk子函数,这样套接口fd就可以与它们进程之间共享,之后子程序就可以读和写已连接的套接口,变为并发处理服务器。六.修改之后的程序代码:例如服务器IP:113.55.16.71服务端程序代码:#include"stdafx.h"#include#include#include#include#include#include#include#include

6、>#pragmacomment(lib,"ws2_32.lib")#defineMYPORT3490/*定义用户连接端口*/#defineBACKLOG10/*多少等待连接控制*/#defineSERVER_IP_ADDR"113.55.16.71"/*服务器的IP地址*/int_tmain(intargc,_TCHAR*argv[]){SOCKETsock,msgsock;intlength=0;structsockaddr_inserver;structsockaddrtcpaddr;charbuf[1024

7、]="";intrval=0,len=0,err=0;WORDwVersionRequested;WSADATAwsaData;/*指定socket版本,否则创建socket失败,即使创建socket返回值不为-1,但是bind时会失败*/wVersionRequested=MAKEWORD(2,2);err=WSAStartup(wVersionRequested,&wsaData);if(err!=0)return-1;/*建立套接字*/sock=socket(AF_INET,SOCK_STREAM,0);i

8、f(sock<0){perror("openingstreamsocket");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_

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

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

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