- 1、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
实验报告 实验名称 Windows Socket编程 课程名称 计算机网络 双向通信:修改simplex-talk 程序,编制duplex-talk 程序,支持client 和server 的双向通信 1.实验目的 1.掌握网络应用程序的开发方法; 2.掌握Client/ Server 结构软件的设计与开发方法 3.掌握Socket 机制的工作原理 2.实验环境 操作系统:Windows 7 开发环境:Code::Blocks 10.05 3.实验内容与结果 (1)程序整体功能 Client端程序连接Server端程序,Client能给Server发送信息,同时Server也能给Client发送信息,实现双向通信; (2) 程序组成及各模块功能 Client端 传入server端的主机号将server端的主机号转换为IP地址发起一个socket连接请求 传入server端的主机号 将server端的主机号转换为IP地址 发起一个socket连接请求 判断连接是否成功 报错,退出 N 发送信息关闭连接接收信息判断信息是否为空YNY判断信息是否为空NY退出程序 发送信息 关闭连接 接收信息 判断信息是否为空 Y N Y 判断信息是否为空 N Y 退出程序 Server 监听等到Client的连接请求建立与Client 监听等到Client的连接请求 建立与Client的连接 接收信息关闭连接发送信息判断信息是否为空NN判断信息是否为空YY退出程序 接收信息 关闭连接 发送信息 判断信息是否为空 N N 判断信息是否为空 Y Y 退出程序 (3)程序清单(见附件,主要函数如下) 主要函数: 1)Winsock 的启动和终止--- WSAStartup()和WSACleanup() 由于Winsock 服务是以动态链接库的形式实现的,所以在使用前必须调用WSAStartup函数对其进行初始化,协商Winsock 的版本支持,并分配必要的资源。 WSAStartup 函数声明如下: int WSAStartup(WORD wVersionRequested, LPWSADATA IpWSAData 2) 创建套接字--- socket() 调用socket 创建一个流套接字,该函数声明如下: SOCKET socket(int af,int type,int protocol); 3) 绑定本地地址---bind() 成功创建了Socket 之后,就应该选定通信的对象。调用bind()函数可以将本地地址绑定到套接字上,该函数声明如下: int bind(SOCKET s,const struct sockaddt FAR* name ,int namelen); 4) 侦听连接---listen() 绑定成功后,调用listen 函数用于设置套接字的等待连接状态,该函数声明如下: int listen(SOCKET s,int backlog); 5) 建立套接字连接---accept()和connect() 进入监听状态后,通过调用accept 函数使套接字做好接受客户连接的准备,该函数声明如下: SOCKET accept(SOCKET s,struct sockaddr FAR* addr,int FAR* addrlen); 6) 面向连接的数据传输---send()和recv() 不论是客户还是服务器应用程序都用send 函数来向TCP 连接的另一端发送数据。客户程序一般用send 函数向服务器发送请求,而服务器则通常用send 函数来向客户程序发送应答。函数声明如下: int send( SOCKET s, const char FAR *buf, int len, int flags ); 不论是客户还是服务器应用程序都用recv 函数从TCP 连接的另一端接收数据。函数声明如下: int recv( SOCKET s, char FAR *buf, int len, int flags ); 7) 无连接的数据传输sendto()和recvfrom() 这两个函数通常用于无连接通信中数据的发送与接收(也可用于面向连接的通信,但并不常见,详细用法请参考MSDN)。sendto()函数用于在参数s 指定的套接字上向指定目的地发送输出数据。Recvfrom()函数用于在参数s 指定的套接字上读取输入数据,并将发送数据 的对端socket 地址存入源地址缓冲区中。 函数声明: int sendto(SOCKET s, const char FAR *buf,int len, int flags, const struct sockaddr FAR* to, int tolen); int recvfrom(SOCKET s,
文档评论(0)