华北电力大学 TCP实验报告.doc
上传人:sy****28 上传时间:2024-09-10 格式:DOC 页数:10 大小:219KB 金币:16 举报 版权申诉
预览加载中,请您耐心等待几秒...

华北电力大学 TCP实验报告.doc

华北电力大学TCP实验报告.doc

预览

在线预览结束,喜欢就下载吧,查找使用更方便

16 金币

下载此文档

如果您无法下载资料,请参考说明:

1、部分资料下载需要金币,请确保您的账户上有足够的金币

2、已购买过的文档,再次下载不重复扣费

3、资料包下载后请先用软件解压,在使用对应软件打开

华北电力大学实验报告第页共页华北电力大学实验报告||实验名称基于Winsock的多客户并发服务程序的实现课程名称TCP/IP实验原理||专业班级:网络1002学生姓名:学号:成绩:指导教师:李丽芬实验日期:2013.5一、实验目的:熟悉socket的操作,掌握异步socket的使用方法,理解多线程的概念,初步掌握线程的编程方法。二、实验要求:基于Winsock分别编写客户端和服务器端程序,服务器端进行监听,接到客户的请求后服务器与客户建立关联,采用流套接字(TCP)或数据报套接字(UDP)均可。服务器端接受客户传送来的数据并将其发回给客户端。服务器端实现接受多个客户的服务请求并为它们服务,接受客户传送来的数据并将数据分别发回给客户端,服务器端和客户端的数据通信采用的是异步方式。三、实验流程图:服务器端顺序:1.加载套接字库2.创建套接字(socket)3.将套接字绑定到一个本地地址和端口上(bind)4.将套接字设为监听模式,准备接收客户请求(listen)5.等待客户请求的到来;当请求带来后,接受连接请求,返回一个新的对应于此次连接的套接字(accept)6.用返回的套接字和客户端进行通信(send/recv)7.返回,等待另一个客户请求8.关闭套接字(closesocket)客户端程序:1.加载套接字库2.创建套接字(socket)3.向服务器发送连接请求(connect)4.和服务器端进行通信(send/receive)5.关闭套接字(closesocket)四、程序中主要函数:创建基于TCP协议的CS程序的Server端所涉及的相关函数说明:intWSAStartup(WORDwVersionRequested,LPWSADATAlpWSAData):作用是加载套接,字库和进行套接字库的版本协商a.参数wVersionRequested:用于指定准备加载的Winsock库的版本,高位字节指定所需要的Winsock库的副版本,低位字节则是主版本,可用MAKEWORD(X,Y)(其中,x为高位字节,y为低位字节)方便获得wVersionRequested的正确值。b.参数lpWSAData:指向WSADATA结构的指针,WSAStartup用其加载的库版本有关的信息填在这个结构中。2.SOCKETsocket(intaf,inttype,intprotocol):a.参数af指定地址族,对于TCP/IP协议的套接字,它只能是AF_INET。b.参数type指定Socket类型,对于1.1版本的Socket,它只支持两种类型的套接字,SOCK_STREAM指定产生流式套接字,SOCK_DGRAM产生数据报套接字。c.参数protocol与特定的地址家族相关的协议,如果指定为0,那么他就会根据地址格式和套接字类别,自动为你选择一个合适的协议。这是推荐使用的一种选择协议的方式。3.intbind(SOCKETs,conststructsockaddrFAR*name,intnamelen):a.第一个参数指定要绑定的套接字,第二个参数指定该套接字的本地地址信息,是指向sockaddr结构的指针变量,由于该地址结构是为了所有的地址家族准备使用的,这个结构可能(通常会)随使用的网络协议不同而不同,所以,要用第三个参数指定该地址结构的长度。4.intlisten(SOCKETs,intbacklog):将套接字设置为监听模式,其中第二个参数设置等待请求连接的最大的值,即如果设置为n,则前n个请求会放置在系统的请求连接队列中,应用程序会依次对这些请求进行服务,但第n+1个连接请求则会被拒绝。5.SOCKETaccept(SOCKETs,conststructsockaddrFAR*addr,intFAR*addrlen):从客户端接收请求,并创建连接,如果连接成功,则会返回一个当前成功建立连接的套接字,该套接字不是上面创建的监听套接字,而是仅仅适用于当前的一个请求连接,如果建立连接失败,则返回值是INVALID_SOCKET,并且可以适用WSAGetLastError()函数得到相关的失败信息。6.send函数:向客户端发送指定信息7.recv函数:得到从客户端传递过来的信息8.closesocket(SOCKETs):将指定的套接字关闭,从而释放资源9.WSACleanup():终止对winsocket库的使用创建基于TCP协议的CS程序的Client端所涉及的相关函数说明(按使用的先后顺序排列):1.intWSAStartup(WORDwVersionRequested,LPWSADATAlpWSADat