C#网络编程之--TCP协议(一)
2016-04-30 10:37
316 查看
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,然后继续最自己接待引导的工作。
第一篇学习记录就到这,其中不足,或错的地方,希望看过的能够指正,谢谢了~
我要一步一步往上爬 在最高点乘着叶片往前飞 任风吹干 流过的泪和汗 我要一步一步往上爬 等待阳光静静看着它的脸 小小的天有大大的梦想 我有属于我的天 任风吹干流过的泪和汗 总有一天我要属于我的天
原文转自:/article/7094824.html
相关文章推荐
- tcp 状态以及三次握手
- HttpURLConnection请求
- 如何使用gson解析泛型形参并返回相对应的类
- HttpClient 四种请求访问代码 HttpGet HttpPost HttpPut HttpDelete
- TCP SYN洪泛攻击的原理及防御方法
- Okhttp使用
- android网络通信之WIFI教程实例汇总
- git使用ssh密钥和https两种认证方式汇总(转)
- 机器学习之神经网络模型-下(Neural Networks: Representation)
- 机器学习之神经网络模型-上(Neural Networks: Representation)
- Android开发本地及网络Mp3音乐播放器(十一)使用Jsoup组件请求网络,并解析音乐数据
- Android开发本地及网络Mp3音乐播放器(十一)使用Jsoup组件请求网络,并解析音乐数据
- 安卓APP测试之使用Burp Suite实现HTTPS抓包方法
- java发送http的get,post请求【学习记录】(转)
- [置顶] linux TCP 和 socket 参数设置
- Android 网络请求方法
- 借助IP和网红的逻辑,网络文学江湖中免费与付费也能共生
- 扫黄打非办再行动,色情网络直播平台遭整治
- jmeter Http Request
- 移动网络的访问