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

上传人:b****7 文档编号:9173740 上传时间:2023-02-03 格式:DOCX 页数:12 大小:52.92KB
下载 相关 举报
基于TCP协议的网络通信设计与实现.docx_第1页
第1页 / 共12页
基于TCP协议的网络通信设计与实现.docx_第2页
第2页 / 共12页
基于TCP协议的网络通信设计与实现.docx_第3页
第3页 / 共12页
基于TCP协议的网络通信设计与实现.docx_第4页
第4页 / 共12页
基于TCP协议的网络通信设计与实现.docx_第5页
第5页 / 共12页
点击查看更多>>
下载资源
资源描述

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

《基于TCP协议的网络通信设计与实现.docx》由会员分享,可在线阅读,更多相关《基于TCP协议的网络通信设计与实现.docx(12页珍藏版)》请在冰豆网上搜索。

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

基于TCP协议的网络通信设计与实现

基于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++派生而来的一种“简单、流行、面向对象、类型安全”的程序设计语言,其综合了Visualbasic的高效率和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)的基础。

和OSI的7层协议相比,TCP/IP协议只有4个层次。

通常说的TCP/IP是一组协议的总称,TCP/IP实际上是一个协议族,包括100多个相互关联的协议,其中IP(InternetProtocol,网际协议)是网络层最主要的协议;TCP(TransmissionControlProtocol,传输控制协议)和UDP(UserDatagramProtocol,用户数据报协议是传输层中最主要的协议),一般认为IP、TCP、UDP是最根本的三种协议,是其他协议的基础.

 

1.4、TCP——传输控制协议

面向连接的通信可以使用可靠通信,在这时候,第四层协议发送数据接收方的确认,如果未收到数据或者数据被损坏,则请求重新传输.TCP协议就使用这种可靠通信.

使用TCP协议的应用层协议包括HTTP、FTP、SMTP和Telnet等。

TCP要求在发送数据之前必须打开连接。

服务器应用程序必须执行一个称作被动打开(passiveopen)的操作,以利用一个已知的端口号创建一个链接,这是,服务器并不是对网络进行呼叫,而是侦听并等待引入的请求.客户应用程序必须执行一个主动打开(activeopen),为此,它向服务器应用程序发送一个同步序列号(SYN)以标识连接。

客户应用程序可以将动态端口号作为本地端口使用。

服务器必须向客户发送一个确认(ACK)以及服务器的序列号(SYN).随后,客户回复一个ACK,这样就建立了链接。

现在可以发送和接收消息了.接收消息后,总是返回ACK消息。

如果在收到ACK之前发送方已经超时,则消息将被放到重发队列中以再次发送。

由于它的握手机制,所以TCP协议比较复杂并且费时,但此协议在处理数据时对数据包的传送有保障,从而使得在应用程序协议中不需要再包括该功能。

 

1。

5、套接字

套接字这个术语并没有定义某个协议:

它具有两层含义,但两者都与一个协议相关。

第一个含义是套接字编程API,它最初由伯克利大学为BSDUNIX而创建。

BSD套接字在经过修改后被用作Windows环境的编程接口(并且被命名为WinSock)。

WinSockAPI被包装在System.Net。

sockets命名空间的。

NET类中.WindowsSockets是一个独立于协议的编程接口,用于编写网络应用程序。

套接字的第二层含义表示一个用于在进程间进行通信的终端。

在TCP/IP中,每个终端都与一个IP地址和一个端口号绑定。

我们必须对流式套接字和数据报套接字这两种类型进行区分.流失套接字用TCP/IP协议来使用面向连接的通信;另一方面,数据报套接字用UDP/IP来使用无连接通信。

 

2、系统框架

3、系统设计

 

4、系统的实现

4.1、服务器端程序

#include

h>

#include〈stdio。

h>

Voidmain()

{

//加载套接字库

WORDwVersionRequested;

WSADATAwsaDdata;

Interror;

wVersionRequested=MAKEWORD(1,1);

err=WSAStarup(wVersionRequested,&wsaDATA);

if(err!

=0){

return;

If(LOBYTE(wsadata。

wVersion)!

=1||HIBYTE(wsadata.wVersion)!

=1)

WSACleanup();

Return;

 

//创建用于监听的套接字

SOCKETsockSrv=socket(AF-INET,SOCK—STREAM,0);

SOCKADDR—INaddrSrv;

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—INaddrClient;

Intlen=sizeof(SOCKADDR);

While

(1)

{

//等待客户请求到来

SOCKETsockConn=accept(sockSrv,(SOCKADDR*)&addrClient,&len);

CharsendBuf(100);

Sprintf(sendBuf,)”Welcom%stohttp:

//www.sunxin。

org”,ine—ntoa(addrClient。

sin—addr));

 

//发送数据

Send(sockConn,sendbuf,strlen(sendBuf)+1,0);

CharrecvBuf(100);

 

//接受数据

Recv(sockConn,recvBuf,100,0);

//打印接受的数据

Printf(“%s\n”,recvBuf);

 

//关闭套接字

Closesocket(sockConn);

}

}

4。

2、客户端程序

#include〈Winsock2。

h>

#include〈stdio。

h>

Voidmain()

//加载套接字库

WORDwVersionRequested;

WSADATAwsaDdata;

Interror;

wVersionRequested=MAKEWORD(1,1);

err=WSAStarup(wVersionRequested,&wsaDATA);

if(err!

=0){

return;

}

If(LOBYTE(wsadata.wVersion)!

=1||HIBYTE(wsadata。

wVersion)!

=1)

WSACleanup();

Return;

 

//创建套接字

SOCKETsockSrv=socket(AF-INET,SOCK—STREAM,0);

SOCKADDR-INaddrSrv;

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));

//接受数据

CharrecvBuf[100];

Recv(sockClient,recvBuf,100,0);

Printf(“%s\n",recvBuf);

//发送数据

Send(sockClient,”Thisislisi”,strlen(“Thisinlisi”)+1,0);

//关闭套接字

Closesocket(sockConn);

WSACLeanup();

}

结论

在此设计中仅仅适合于数量少的计算机间的通信,其中一个缺陷是,当多台计算机同时进行通信时,会照成网络拥塞,可能导致消息传输中丢失,此设计没有做出解决的方案,但有这样的方案猜想,为了解决拥塞问题,可以使用慢开始、拥塞避免、快从传和快恢复算法,进而改进此设计,但是这会涉及大量的数学运算。

此设计还存另一个缺陷,没有实现可靠传输,TCP协议的可靠传输机制是用字节的序号进行传输控制,而这里仅是监听端口是否有数据发送,如果有,就接收,没有就继续监听。

参考文献

[1]孙鑫,VC++深入详解[M]北京:

电子工业出版社,2012。

7:

528—546

[2]谢希仁,计算机网络[M]北京:

电子工业出版社,2008.1:

180—210

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 职业教育 > 职高对口

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1