C#网络编程之--TCP协议(一)

原文地址:http://www.cnblogs.com/MrALei/p/3580574.html

C#网络编程之--TCP协议(一)

TCP 是面向连接的传输协议

面向连接,其实就好比,A打电话给B,如果B接听了,那么A和B之间就的通话,就是面向连接的

TCP 是全双工的传输协议

全双工,这个理解起来也很简单,A打电话给B,B接听电话,那么A可以说话给B听,同样B也可以给A说话,不可能只允许一个人说话.

TCP 是点对点的

点对点,这个看了上面的举例相比大家都知道了,还要说一点的是,如果在A和B打电话过程中,B又来了一个紧急电话,那么B就要将与A的通话进行通话保持,所以不管怎么讲同一个连接只能是点对点的,不能一对多。

TCP 是可靠地数据传输

可靠地,一旦建立了连接,数据的发送一定能够到达,并且如果A说“你好吗?” B不会听到“吗你好”,这就是可靠地数据传输

说完了TCP的诸多优点,再说说TCP的另一个重要的合作伙伴:套接字(Socket)

好吧,说实话我不知道如何形象的说套接字,或许我不太理解的缘故,粗略的说一下吧,TCP是传输层的协议,用于数据传送的,在我们编写短信时,短信窗口其实就是一个应用程序,当我们发送短信时,短信从应用程序滚到传输通道,应用程序和传输通道间就存在一个套接字的东西,没有套接字,应用程序就无法将短信滚到传输通道。额...感觉灰常别扭。

如果想清楚的了解套接字是什么 请大家移步 C#网络编程 

套接字包含的最重要的也就是两个信息:连接至远程的本地的端口信息(本机地址和端口号),连接到的远程的端口信息(远程地址和端口号)。 .NET提供了两个类将对套接字的编程进行了一个封装,这两个类是TcpClient和TcpListener, TcpListener用于接受连接请求,而TcpClient则用于接收和发送流数据。TcpListener持续地保持对端口的侦听,一旦收到一个连接请求后,就可以获得一个TcpClient对象,而对于数据的发送和接收都有TcpClient去完成。此时,TcpListener并没有停止工作,它始终持续地保持对端口的侦听状态。----张子阳《C#网络编程(基本概念和操作) - Part.1》

引用一段话作为过渡

得益于.Net 对套接字进行的封装,我们可以很简单的写一下简单的基础例子,关于TCP协议,通常将发起请求连接的一方为客户端,另一端为服务端

简单服务端代码:

IPAddress ip = IPAddress.Parse("127.1.1.1");//服务端地址
TcpListener server = new TcpListener(ip,8005);//侦听的端口号
server.Start();//开始侦听

其实服务端就像是某机场,某机场的地址就是服务端地址,机场的某条降落跑道就是服务端监听的端口号

客户端代码:

IPAddress ip = IPAddress.Parse("127.1.1.1");
TcpClient client = new TcpClient();
client.Connect(ip, 8005);

看了以上代码,就很明白是怎么回事了,飞机要飞往某个机场肯定要先知道某机场的地址,和机场允许该飞机降落的跑道号,一且都知道了,那么就飞过去,降落吧,嘿嘿

有了以上代码,客户端就可以连接服务端了,但是服务端是如何知道已经于一个客户端连接了呢?

在服务器端开始侦听以后,可以在TcpListener实例上调用AcceptTcpClient()来获取与一个客户端的连接,它返回一个TcpClient类型实例

TcpClient client = server.AcceptTcpClient();//server 就是TcpListener的实例

TcpListener 就像一个酒店的前台,可以接受很多对象的连接,职责很单一,就是接受连接请求,将连接请求对象交给TcpClient,然后继续最自己接待引导的工作。

第一篇学习记录就到这,其中不足,或错的地方,希望看过的能够指正,谢谢了~

我要一步一步往上爬 在最高点乘着叶片往前飞 任风吹干 流过的泪和汗 我要一步一步往上爬 等待阳光静静看着它的脸 小小的天有大大的梦想 我有属于我的天 任风吹干流过的泪和汗 总有一天我要属于我的天
课程背景 Modbus 协议是工业自动化控制系统中常见的通信协议协议的全面理解是个痛点。 本课程主讲老师集10多年在Modbus协议学习、使用中的经验心得,结合当前物联网浪潮下Modbus协议开发的痛点,推出这套面向Modbus 协议初学者的课程。本课程不同于以往市面课程只是协议讲解无实现代码,而是采用讲解与实践并重的方式,结合STM32F103ZET6开发板进行手把手编程实践,十分有利于初学者学习。 涵盖了学习者在Modbus协议方面会遇到的方方面面的问题,是目前全网首个对Modbus协议进行全面总结的课程。 课程名称    <<Modbus协议讲解及实现>> 课程内容 1、Modbus 协议的基础。 2、Modbus协议栈函数编程实现。 3、Modbus协议在串行链路编程实现。 4、Modbus协议在以太网链路编程实现。 5、常见问题的解决方法。 带给您的价值 通过学习本课程,您可以做到如下: 1、全面彻底的理解Modbus协议。 2、理解在串行链路,以太网链路的实现。 3、掌握Modbus协议解析的函数编程方法,调试工具的使用。 4、掌握多个串口,网口同时运行同一个Modbus协议栈的方法。 5、掌握Modbus协议下,负数,浮点数等处理方法。 讲师简介 许孝刚,山东大学工程硕士,副高职称,技术总监。 10多年丰富嵌入式系统开发经验,国家软考“嵌入式系统设计师”。 2017年获得“华为开发者社区杰出贡献者”奖励。
©️2020 CSDN 皮肤主题: 大白 设计师:CSDN官方博客 返回首页