《计算机网络课程设计报告--利用Winsock实现双机通信.docx》由会员分享,可在线阅读,更多相关《计算机网络课程设计报告--利用Winsock实现双机通信.docx(14页珍藏版)》请在第一文库网上搜索。
1、课程设计报告20142015学年第一学期课程名称计算机网络设计题目利用Winsock实现双机通信一、摘要2二、目的和要求2三、开发环境简介2(一)、Visua1C+6.O简介2(二)、Visua1C+6.0主要组成2四、TCP/IP简介3(一)、TCP/IP简介3(二)、TCP作用4五、WinSock简介4(一)、什么是SOCket4(二)、WinSocket的通信原理5(三)、基本套接字5六、设计方案7()、WinSOCket通信的步骤:7七、程序代码9(一)、服务器端代码9(二)、客户端代码11八、运行结果13九、课程设计的总结体会13十、参考文献14利用socket实现双机通信一、摘要S
2、ocket通信机制提供了两种通信方式:有连接(TCP)和无连接方式(UDP),分别面线不同的应用需求。使用有连接方式时,通信链路提供了可靠的,全双工的字节流服务。在该方式下,通信双方必须必须创建一个联接过程并建立一条通信链路,以后的网络通信操作完全在这一对进程之间进行,通信完毕关闭此联接过程。使用无连接方式时其系统开销比有连接方式小,但通信链路提供了不可靠的数据报服务,不能保证信源所传输的数据一定能够到达信宿。在该方式下,通信双方不必创建一个联接过程和建立一条通信链路,网络通信操作在不同的主机和进程之间转发进行。关键字:Winsock、TCP、VC+、双机通信二目的和要求利用WinSock来实
3、现双机通信,理解TCP状态机图。要求使用WinSock编程,采用其中的TCP面向连接方式,实现文本数据的交换。三开发环境简介(一)、Visua1C+6.0简介Visua1C+6.0,简称VC或者VC6.0,是微软推出的一款C+编译器,将“高级语言”翻译为“机器语言(低级语言)”的程序。ViSUa1C+是一个功能强大的可视化软件开发工具。自1993年Microsoft公司推出Visua1C+1.0后,随着其新版本的不断问世,Visua1C+已成为专业程序员进行软件开发的首选工具。虽然微软公司推出了ViSUa1C+.NET(ViSUa1C+7.0),但它的应用的很大的局限性,只适用于Windows
4、2000、WindowsXP和WindowsNT4.Oo所以实际中,更多的是以ViSUa1C+6.0为平台。ViSUa1C+6.0不仅是一个C+编译器,而且是一个基于Windows操作系统的可视化集成开发环境(integrateddeve1opmentenvironment,IDE)oVisua1C+6.0由许多组件组成,包括编辑器、调试器以及程序向导APPWiZard、类向导CIaSSWiZard等开发工具。这些组件通过一个名为DeVe1oPerStudio的组件集成为和谐的开发环境。(二)、Visua1C+6.0主要组成1、Deve1operStudio,这是一个集成开发环境,我们日常工作
5、的99%都是在它上面完成的,再加上它的标题赫然写着“MicrosoftVisua1C+”,所以很多人理所当然的认为,那就是ViSUa1C+了。其实不然,虽然DeVeIOPerStUdiO提供了一个很好的编辑器和很多WiZard,但实际上它没有任何编译和链接程序的功能,真正完成这些工作的幕后英雄后面会介绍。我们也知道,Deve1operStUdio并不是专门用于VC的,它也同样用于VB,VJ,V1D等ViSUa1StUdio家族的其他同胞兄弟。所以不要把DeVe1oPerStUdio当成ViSUa1C+,它充其量只是ViSUaIC+的一个壳子而已。这一点请切记!2、MFCo从理论上来讲,MFe也
6、不是专用于ViSUa1C+,Bor1andC+,C+Bui1der和SymanteCC+同样可以处理MFC。同时,用ViSUaIC+编写代码也并不意味着一定要用MFC,只要愿意,用ViSUaIC+来编写SDK程序,或者使用ST1,AT1,一样没有限制。不过,ViSUa1C+本来就是为MFC打造的,Visua1C+中的许多特征和语言扩展也是为MFC而设计的,所以用Visua1C+而不用MFC就等于抛弃了Visua1C+中很大的一部分功能。但是,Visua1C+也不等于MFC。3、P1atformSDKo这才是Visua1C+和整个Visua1Studio的精华和灵魂,虽然我们很少能直接接触到它。
7、大致说来,PIatfOrmSDK是以MiCroSoftC/C+编译器为核心(不是ViSUaIC+,看清楚了),配合MASM,辅以其他一些工具和文档资料。上面说到DeVehPerStUdiO没有编译程序的功能,那么这项工作是由谁来完成的呢?是C1,是NMAKE,和其他许许多多命令行程序,这些我们看不到的程序才是构成ViSUa1StUdio的基石。四、TCP/IP简介(一)、tcp/ip简介TCP/IP(TransmissionContro1Protoco1/InternetPrOtoCO1)的简写,中文译名为传输控制协议/因特网互联协议,又叫网络通讯协议,这个协议是Internet最基本的协议、
8、Internet国际互联网络的基础,简单地说,就是由网络层的IP协议和传输层的TCP协议组成的。TCP(TransmissionContro1Protoco1)中文称为“传输控制协议”。TCP是一种面向连接的、可靠的、基于字节流的运输层(Transport1ayer)通信协议。在简化的计算机网络OS1模型中,它完成第四层传输层所指定的功能(UDP)是同一层内另一个重要的传输协议。IP是英文InternetProtOCo1的缩写,中文称为“网际协议”,是为计算机网络相互连接进行通信而设计的协议。在因特网中,它是能使连接到网上的所有计算机网络实现相互通信的一套规则,规定了计算机在因特网上进行通信时
9、应当遵守的规则。任何厂家生产的计算机系统,只要遵守,IP协议就可以与因特网互连互通。(二)、TCP作用在因特网协议族中,TCP层是位于IP层之上,应用层之下的中间层。提供可靠的、像管道一样的连接。应用层向TCP层发送用于网间传输的、用8位字节表示的数据流,然后TCP把数据流分割成适当长度的报文段,通常受该计算机连接的网络的数据链路层的最大传送单元(MTU)的限制。之后TCP把结果包传给IP层,由它来通过网络将包传送给接收端实体的TCP层。TCP为了保证不发生丢包,就给每个字节一个序号,同时序号也保证了传送到接收端实体的包的按序接收。然后接收端实体对已成功收到的字节发回一个相应的确认(ACK),
10、如果发送端实体在合理的往返时延(RTT)内未收到确认,那么对应的数据,假设丢失了,将会被重传。TCP用一个校验和函数来检验数据是否有错误,在发送和接收时都要计算校验和。首先,TCP建立连接之后,通信双方都同时可以进行数据的传输。其次,TCP通信是全双工的,在保证可靠性上,采用超时重传和捎带确认机制。在流量控制上,采用滑动窗口协议,协议中规定,对于窗口内未经确认的分组需要重传。在拥塞控制上,采用慢启动算法。TCP所提供服务的主要特点有:1、面向连接的传输;2、端到端的通信;3、高可靠性、确保传输数据的正确性,不出现丢失或乱序;4、全双工方式传输;5、采用字节流方式,即以字节为单位传输字节序列;6
11、、紧急数据传送功能。五、WinSock简介(一)、什么是SoCket所谓SOCket通常也称作套接字,用于描述IP地址和端口,是一个通信链的句柄。应用程序通常通过套接字向网络发出请求或者应答网络请求。SOCket接口是TCP/IP网络的API,SoCket接口定义了许多函数或例程,程序员可以用它们来开发TCP/IP网络上的应用程序。要学Internet上的TCP/IP网络编程,必须理解Socket接口。Socket接口设计者最先是将接口放在Unix操作系统里面的。如果了解UniX系统的输入和输出的话,就很容易了解SoCket了。网络的Socket数据传输是一种特殊的I/O,Socket也是一种
12、文件描述符。Socket也具有一个类似于打开文件的函数调用Socket0,该函数返回一个整型的Socket描述符,随后的连接建立、数据传输等操作都是通过该Socket实现的。常用的Socket类型有两种:流式Socket(SOCK_STREAM)和数据报式Socket(sock_dgram)o流式是一种面向连接的SOCket,针对于面向连接的TCP服务应用;数据报式Socket是一种无连接的Socket,对应于无连接的UDP服务应用。最重要的是,socket是面向客户/服务器模型而设计的,针对客户和服务器程序提供不同的SoCket系统调用。客户随机申请一个SoCket(相当于一个想打电话的人可
13、以在任何一台入网电话上拨号呼叫),系统为之分配一个socket号;服务器拥有全局公认的SOCket,任何客户都可以向它发出连接请求和信息请求(相当于一个被呼叫的电话拥有一个呼叫方知道的电话号码)。socket利用客户/服务器模式巧妙地解决了进程之间建立通信连接的问题。服务器SOCket半相关为全局所公认非常重要。不妨考虑一下,两个完全随机的用户进程之间如何建立通信?假如通信双方没有任何一方的SOCket固定,就好比打电话的双方彼此不知道对方的电话号码,要通话是不可能的。(二)、WinSocket的通信原理WinSOCk是一个基于SoCket模型的API。WinSOCk在Windows98,Wi
14、ndowNT中使用。WinSOCk一般由两部分组成:开发组件和运行组件。开发组件是供程序员在WindOWS环境下开发网络应用程序使用的,它包括应用程序接口库函数、头文件和实现的文档,其中最主要的是WINSOCK.H运行组件是以动态链接库(D11)来实现socket接口的。文件名为WINSOCK.D11应用程序在执行时装入它就能实现网络通信功能(三)、基本套接字1、创建套接字一一SOCketO功能:使用前创建一个新的套接字格式:SOCKETPASCA1FARsocket(intaf,inttype,intprocoto1);参数:af:通信发生的区域type:要建立的套接字类型PrOCotO1:
15、使用的特定协议2、指定本地地址bind()功能:将套接字地址与所创建的套接字号联系起来。格式:intPASCA1FARbind(SOCKETs,conststructsockaddrFAR*name,intname1en);参数:s:是由SOCket()调用返回的并且未作连接的套接字描述符(套接字号)。其它:没有错误,bind()返回0,否则SOCKET_ERROR地址结构说明:structsockaddr_inshortsin_fami1y;/AF_INETu_shortSin_port;/16位端口号,网络字节顺序structin_addrSin_addr;32位IP地址,网络字节顺序charSin_zero8;/保留)3、建立套接字连接ConneCt()和accept()功能:共同完成连接工作格式:intPASCA1FARconnect(SOCKETs,conststructsockaddrFAR*name,intname1en);SOCKETPASCA1FARaccept(SOCKETs,structsockaddrFAR*name,intFAR*addr1en);参数:同上4、监听连接1isten()功能:用于面向连接服务器,表明它愿意接收连接。格式:intPASCA1FAR1is