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

  • 155
  • 0
  • 约5.46千字
  • 约 9页
  • 2017-06-11 发布于北京
  • 举报

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

计算机网络 课程设计报告 姓名: 学号: 班级: 指导老师: 湖南科技大学计算机科学与工程学院 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)

1亿VIP精品文档

相关文档