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

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

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

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

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

....。

......。

1。

3、TCP协议…………………………………………………………………………

4、TCP——传输控制协议…………………………………………………………。

5、套接字……………………………………………………………………………

2、系统框架。

.......。

.

3、系统设计流程图。

4、系统的实现。

..

4。

1、服务器端程序..。

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#语言.

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协议比较复杂并且费时,但此协议在处理数据时对数据包的传送有保障,从而使得在应用程序协议中不需要再包括该功能。

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<

Winsock2。

h>

#include〈stdio。

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

sin-family=AF-INET;

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

}

2、客户端程序

#include〈Winsock2。

#include〈stdio。

WORDwVersionRequested;

WSADATAwsaDdata;

Interror;

wVersionRequested=MAKEWORD(1,1);

err=WSAStarup(wVersionRequested,&wsaDATA);

if(err!

=0){

If(LOBYTE(wsadata.wVersion)!

=1||HIBYTE(wsadata。

//创建套接字

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

SOCKADDR-INaddrSrv;

S—un.S—addr=hotonl(INADDR—ANY);

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

WSACLeanup();

结论

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

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

参考文献

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

电子工业出版社,2012。

7:

528—546

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

电子工业出版社,2008.1:

180—210

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

当前位置:首页 > 求职职场 > 简历

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

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