计算机网络原理实验三_计算机网络原理实验五
计算机网络原理实验三由刀豆文库小编整理,希望给你工作、学习、生活带来方便,猜你可能喜欢“计算机网络原理实验五”。
实验
三、套接字编程
序号: 姓名: 字丽梅 学号: 20091120216 成绩
1.实验目的:
两人一组,编写一个客户端、服务器程序,掌握Socket编程原理。2.实验环境:
连入局域网络的主机一台。3.实验指导:
Socket API是实现进程间通信的一种编程设施,也是一种为进程间提供底层抽象的机制。理解socket编程模型及其原理。4.实验分析,回答下列问题。
a.运行指导书中的程序,并修改服务器的功能(自己思考),改写成多线程web服务器(选作),附上源代码,并加关键代码注释。
b.给出程序调试和运行的截图。
c.回答下列问题:
(1)为什么在服务器和客户端要包含winsock2.h文件?
答:Windows网络编程至少需要两个头文件:winsock2.h和windows.h。
(2)为什么在服务器和客户端程序中要加入#pragma comment(lib,“ws2_32.lib”)语句,如果不加会出现什么问题?
答:#pragma comment(lib,“ws2_32.lib”)表示链接ws2_32.lib这个库。该库对应ws2_32.dll,提供了对某些网络相关API的支持,若使用其中的API,则应该将ws2_32.lib加入工程,如果不加入#pragma comment(lib,“ws2_32.lib”),则不能使用其中的API,即得不到相关API的支持。
(3)为什么在服务器和客户端程序中要使用WSAStartup函数,如果不用程序会有什么问题?
答:本函数必须是应用程序或DLL调用的第一个Windows Sockets函数.它允许应用程序或DLL指明Windows Sockets API的版本号及获得特定Windows Sockets实现的细节。应用程序或DLL只能在一次成功的WSAStartup()调用之后才能调用进一步的Windows Sockets API函数。如果不用应用程序或DLL就不能进一步的调用Windows Sockets API函数,程序就不能继续执行。
(4)如果服务器程序中没有memset(server.sin_zero, 0, sizeof(server.sin_zero));语句,程序会出现什么错误,为什么?
答:没有错误,注释这一条语句后,程序调试成功,实现访问。
(5)如果先运行客户端程序,程序会有什么现象,为什么会有这一现象?
答:程序跳出运行,并显示”can not creat connect!”因为没有相应的服务器与之创立链接。
(6)如果服务器程序所在计算机没有连接网络,程序会发生什么错误?我们捕获到什么错误信息?
答:如果服务器程序所在计算机没有链接网络,则执行程序后出现:
binding stream socket: No error Pre any key to continue...(7)上述服务器是串行处理多个客户端的请求,如何该成并发处理的服务器? 答:用父进程调用accept,然后调用fork,这样,已连接套接口就在父进程与子进程间共享,一般来说,接下来便是子进程读、写已连接套接口并关闭侦听套接口,而父进程则关闭已连接套接口。