湖南科技大学计算机网络课程设计报告.docVIP

湖南科技大学计算机网络课程设计报告.doc

  1. 1、本文档共9页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
计算机网络 课程设计报告 姓名: 学号: 班级: 指导老师: 湖南科技大学计算机科学与工程学院 2016年 1 月 网络聊天程序的设计与实现 课程设计题目 了解Socket通信的原理,在此基础上编写一个聊天程序。 课程设计内容 1.TCP/IP协议与WinSock网络编程接口的关系 WinSock 并不是一种网络协议,它只是一个网络编程接口,也就是说,它不是协议,但是它可以访问很多种网络协议,你可以把它当作一些协议的封装。现在的 WinSock已经基本上实现了与协议无关。你可以使用WinSock来调用多种协议的功能。那么,WinSock和TCP/IP协议到底是什么关系呢?实际上,WinSock就是TCP/IP协议的一种封装,你可以通过调用WinSock的接口函数来调用TCP/IP的各种功能.例如我想用TCP/IP 协议发送数据,你就可以使用WinSock的接口函数Send()来调用TCP/IP的发送数据功能,至于具体怎么发送数据,WinSock已经帮你封装好了这种功能。 2. WinSock编程简单流程 WinSock编程分为服务器端和客户端两部分,TCP服务器端的大体流程如下: 对于任何基于WinSock的编程首先必须要初始化WinSock DLL库。 int WSAStarup( WORD wVersionRequested,LPWSADATA lpWsAData )。 wVersionRequested是我们要求使用的WinSock的版本。 调用这个接口函数可以初始化WinSock 。 然后必须创建一个套接字(Socket)。 SOCKET Socket(int af,int type,int protocol); 套接字可以说是WinSock通讯的核心。WinSock通讯的所有数据传输,都是通过套接字来完成的,套接字包含了两个信息,一个是IP地址,一个是Port端口号,使用这两个信息,就可以确定网络中的任何一个通讯节点。 当调用了Socket()接口函数创建了一个套接字后,必须把套接字与你需要进行通讯的地址建立联系,可以通过绑定函数bind来实现这种联系。 int bind(SOCKET s,const struct sockaddr FAR* name,int namelen) ; struct sockaddr_in{ short sin_family ; u_short sin_port; struct in_addr sin_addr ; char sin_sero[8] ; } 就包含了需要建立连接的本地的地址,包括地址族、IP和端口信息。sin_family字段必须把它设为AF_INET,这是告诉WinSock使用的是IP地址族。sin_port就是要用来通讯的端口号。sin_addr就是要用来通讯的IP地址信息。 在这里,必须还得提一下有关大头(big-endian)小头(little-endian)。因为各种不同的计算机处理数据时的方法是不一样的,Intel X86处理器上是用小头形式来表示多字节的编号,就是把低字节放在前面,把高字节放在后面,而互联网标准却正好相反,所以,必须把主机字节转换成网络字节的顺序。WinSock API提供了几个函数。 把主机字节转化成网络字节的函数; u_long htonl(u_long hostlong); u_short htons(u_short hostshort); 把网络字节转化成主机字节的函数; u_long ntohl(u_long netlong); u_short ntohs(u_short netshort) ; 这样,设置IP地址和port端口时,就必须把主机字节转化成网络字节后,才能用Bind()函数来绑定套接字和地址。 当绑定完成之后,服务器端必须建立一个监听的队列来接收客户端的连接请求。 int listen(SOCKET s,int backlog); 这个函数可以把套接字转成监听模式。 如果客户端有了连接请求,我们还必须使用 int accept(SOCKET s,struct sockaddr FAR* addr,int FAR* addrlen); 来接受客户端的请求。 现在基本上已经完成了一个服务器的建立,而客户端的建立的流程则是初始化WinSock,然后创建Socket套接字,再使用 int connect(SOCKET s,const struct sockaddr FAR* name,int namelen) ; 来连接服务端。 计算机网络(第6版)295页图6-32所示的系统调用使用顺序: 3.VC中socket编程步骤 服务器端编

您可能关注的文档

文档评论(0)

jwjp043 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档