收藏 分销(赏)

基于TCP协议的网络通信设计与实现模板.doc

上传人:快乐****生活 文档编号:9489694 上传时间:2025-03-28 格式:DOC 页数:15 大小:71.04KB 下载积分:8 金币
下载 相关 举报
基于TCP协议的网络通信设计与实现模板.doc_第1页
第1页 / 共15页
基于TCP协议的网络通信设计与实现模板.doc_第2页
第2页 / 共15页


点击查看更多>>
资源描述
基于TCP协议下简单网络通信与实现 摘要 本文设计并实现了在Windows下基于局域网内TCP协议简单即时通信系统, 系统采取TCP/IP模式, 底层通信经过SOCKET套接字接口对端口进行监听, 当有消息发送来时, 做出对应处理, 服务器负责用户端登录验证。本文首先讨论了套接字创建、 绑定、 将套接字设置为监听模式、 接收信息和关闭套接字从而实现简单网络通信, 然后叙述了怎样使用C++来模拟基于TCP协议下用户服务方法网络通信过程。因为在此设计中关键是使用C程序形式来模拟TCP协议传输方法, 从而实现面向对象可靠传输, 在这种情况下无需对IP协议进行讨论。 关键字: 套接字 TCP协议 目录 1、 引言………………………………………………………………………………….... 1.1、 课程背景............................................................................................................... 1.2、 相关技术介绍....................................................................................................... 1.3、 TCP协议………………………………………………………………………… 1.4、 TCP——传输控制协议…………………………………………………………. 1.5、 套接字…………………………………………………………………………… 2、 系统框架......................................................................................................................... 3、 系统设计步骤图............................................................................................................. 4、 系统实现..................................................................................................................... 4.1、 服务器端程序.............................................................................................................. 4.2、 用户端程序.................................................................................................................. 结论…………………………………………………………………………………… 参考文件……………………………………………………………………………… 1、 引言 1.1、 课题背景 TCP/IP起源于美国国防部高级研究计划布署(DARPA)一项研究计划——实现若干台主机相互通信。现在, TCP/IP已成为Internet上通信工业标准。 因为OSI模型七层参考模型比较复杂, 而且在实际利用中难以实现, 所以现在应用比较多是TCP/IP模型, 该模型包含4个层次: 应用层 运输层 网络层 网络接口层 对于TCP/IP网络层次模式, 关键协议是网络层IP协议, 和运输层TCP协议, 这也是为何成为TCP/IP协议缘由。 1.2、 相关技术介绍 NET开发平台及C#.NET开发语言 NET框架是Microsoft企业推出一个全新开发平台,提供了统一、 面向对象而且能够扩展编程类库和完善集成开发环境,大大简化了应用程序开发过程,而且含有良好移植性和安全性。 微软为了推行.NET战略, 尤其为.NET平台设计了一个语言——C#。C#是由C和C++派生而来一个“简单、 流行、 面向对象、 类型安全”程序设计语言, 其综合了Visual basic高效率和C++强大功效, 然而更多人感觉C#更类似JAVA。实际上C#融合了大量JAVA思想, C#是.NET关键性语言, 它是整个.NET平台基础。与C#相比, .NET所支持其它语言显然是配角, 包含VC++.NET在内。不过微软并没有计划放弃VC++.NET, 相反, 微软对VC++.NET有着另一番独特计划, VC++.NET定位与C#不完全重合, VC++.NET应用范围仍强于C#, 这一点不管对微软企业还是软件业应用现实状况都非常关键。 可见VC++.NET在NET框架中已经退化成了底层语言了, 就像C++之前标准C语言一样, 以后将只有开发底层或桌面程序程序员使用它。它即使依旧强大, 不过已经不是主流, 而主流就是C#语言。 1.3、 TCP协议 TCP/IP网络协议 协议是对等网络实体之间通信规则, 能够简单地了解为网络上各计算机相互交流一个“语言”。网络通信协议设计基础标准是层次化, 层和协议集合被称为网络体系结构。相邻层之间接口定义了下层向上层提供基础操作和服务, 下层向上层提供服务分两种形式: 面向连接服务和无连接服务。 计算机网络中已经形成网络体系结构关键有两个: OSI参考模型和TCP/IP参考模型。TCP/IP参考模型是因特网(Internet)基础。和OSI7层协议相比, TCP/IP协议只有4个层次。通常说TCP/IP是一组协议总称, TCP/IP实际上是一个协议族, 包含100多个相互关联协议, 其中IP(Internet Protocol, 网际协议)是网络层最关键协议; TCP(Transmission Control Protocol,传输控制协议)和UDP(User Datagram Protocol,用户数据报协议是传输层中最关键协议), 通常认为IP、 TCP、 UDP是最根本三种协议, 是其她协议基础。 1.4、 TCP——传输控制协议 面向连接通信能够使用可靠通信, 在这时候, 第四层协议发送数据接收方确定, 假如未收到数据或者数据被损坏, 则请求重新传输。TCP协议就使用这种可靠通信。 使用TCP协议应用层协议包含HTTP、 FTP、 SMTP和Telnet等。 TCP要求在发送数据之前必需打开连接。服务器应用程序必需实施一个称作被动打开(passive open)操作, 以利用一个已知端口号创建一个链接, 这是, 服务器并不是对网络进行呼叫, 而是侦听并等候引入请求。用户应用程序必需实施一个主动打开(active open), 为此, 它向服务器应用程序发送一个同时序列号(SYN)以标识连接。用户应用程序能够将动态端口号作为当地端口使用。服务器必需向用户发送一个确定(ACK)以及服务器序列号(SYN)。随即, 用户回复一个ACK, 这么就建立了链接。 现在能够发送和接收消息了。接收消息后, 总是返回ACK消息。假如在收到ACK之前发送方已经超时, 则消息将被放到重发队列中以再次发送。 因为它握手机制, 所以TCP协议比较复杂而且费时, 但此协议在处理数据时对数据包传送有保障, 从而使得在应用程序协议中不需要再包含该功效。 1.5、 套接字 套接字这个术语并没有定义某个协议: 它含有两层含义, 但二者都与一个协议相关。第一个含义是套接字编程API, 它最初由伯克利大学为BSD UNIX而创建。BSD套接字在经过修改后被用作Windows环境编程接口(而且被命名为WinSock)。WinSock API被包装在System.Net.sockets命名空间.NET类中。Windows Sockets 是一个独立于协议编程接口, 用于编写网络应用程序。 套接字第二层含义表示一个用于在进程间进行通信终端。在TCP/IP中, 每个终端都与一个IP地址和一个端口号绑定。我们必需对流式套接字和数据报套接字这两种类型进行区分。流失套接字用TCP/IP协议来使用面向连接通信; 其次, 数据报套接字用UDP/IP来使用无连接通信。 2、 系统框架 3、 系统设计 4、 系统实现 4.1、 服务器端程序 #include <Winsock2.h> #include <stdio.h> Void main() { //加载套接字库 WORD wVersionRequested; WSADATA wsaDdata; Int error; wVersionRequested=MAKEWORD(1,1); err=WSAStarup(wVersionRequested,&wsaDATA); if(err!=0) { return; } If(LOBYTE(wsadata.wVersion)!=1||HIBYTE(wsadata.wVersion)!=1) { WSACleanup(); Return; } //创建用于监听套接字 SOCKET sockSrv=socket (AF-INET,SOCK-STREAM,0); SOCKADDR-IN addrSrv; addrSrv.sin-addr.S-un.S-addr=hotonl(INADDR-ANY); addrSrv.sin-family=AF-INET; addrSrv.sin-port=htons(6000) //绑定套接字 Bind(sockSrv ,(SOCKADDR*)&addrSrv ,sizeof(SOCKADDR)); //将套接字设为监听模式, 准备接收用户请求 Listen(sockSrv,s); SOCKADDR-IN addrClient; Int len=sizeof( SOCKADDR ); While(1) { //等候用户请求到来 SOCKET sockConn=accept(sockSrv ,( SOCKADDR*)&addrClient ,&len); Char sendBuf(100); Sprintf(sendBuf ,)”Welcom %s to ” ,ine-ntoa(addrClient.sin-addr)); //发送数据 Send(sockConn ,sendbuf ,strlen(sendBuf)+1,0); Char recvBuf(100); //接收数据 Recv(sockConn,recvBuf ,100 ,0); //打印接收数据 Printf(“%s\n”,recvBuf); //关闭套接字 Closesocket(sockConn); } } 4.2、 用户端程序 #include <Winsock2.h> #include <stdio.h> Void main() { //加载套接字库 WORD wVersionRequested; WSADATA wsaDdata; Int error; wVersionRequested=MAKEWORD(1,1); err=WSAStarup(wVersionRequested,&wsaDATA); if(err!=0) { return; } If(LOBYTE(wsadata.wVersion)!=1||HIBYTE(wsadata.wVersion)!=1) { WSACleanup(); Return; } //创建套接字 SOCKET sockSrv=socket (AF-INET,SOCK-STREAM,0); SOCKADDR-IN addrSrv; addrSrv.sin-addr.S-un.S-addr=hotonl(INADDR-ANY); addrSrv.sin-family=AF-INET; addrSrv.sin-port=htons(6000) //向服务器发出连接请求 Connect (sockClient ,(SOCKADDR*)&addrSrv ,sizeof(SOCKADDR)); //接收数据 Char recvBuf[100]; Recv(sockClient , recvBuf ,100 ,0); Printf(“%s\n”,recvBuf); //发送数据 Send(sockClient ,” This is lisi ”, strlen(“This in lisi”)+1 ,0); //关闭套接字 Closesocket(sockConn); WSACLeanup() ; } } 结论 在此设计中仅仅适合于数量少计算机间通信, 其中一个缺点是, 当多台计算机同时进行通信时, 会照成网络拥塞, 可能造成消息传输中丢失, 此设计没有做出处理方案, 但有这么方案猜想, 为了处理拥塞问题, 能够使用慢开始、 拥塞避免、 快从传和快恢复算法, 进而改善此设计, 不过这会包含大量数学运算。此设计还存另一个缺点, 没有实现可靠传输, TCP协议可靠传输机制是用字节序号进行传输控制, 而这里仅是监听端口是否有数据发送, 假如有, 就接收, 没有就继续监听。 参考文件 [1]孙鑫, VC++深入详解[M]北京: 电子工业出版社, .7: 528-546 [2]谢希仁, 计算机网络[M]北京: 电子工业出版社, .1: 180-210
展开阅读全文

开通  VIP会员、SVIP会员  优惠大
下载10份以上建议开通VIP会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传

当前位置:首页 > 包罗万象 > 大杂烩

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2025 宁波自信网络信息技术有限公司  版权所有

客服电话:4009-655-100  投诉/维权电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服