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,);//侦听的端口号
server.Start();//开始侦听

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

客户端代码:

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

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

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

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

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

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

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

C#网络编程之--TCP协议(一)的更多相关文章

  1. C#网络编程之---TCP协议的同步通信(二)

    上一篇学习日记C#网络编程之--TCP协议(一)中以服务端接受客户端的请求连接结尾既然服务端已经与客户端建立了连接,那么沟通通道已经打通,载满数据的小火车就可以彼此传送和接收了.现在让我们来看看数据的 ...

  2. 网络编程——基于TCP协议的Socket编程,基于UDP协议的Socket编程

    Socket编程 目前较为流行的网络编程模型是客户机/服务器通信模式 客户进程向服务器进程发出要求某种服务的请求,服务器进程响应该请求.如图所示,通常,一个服务器进程会同时为多个客户端进程服务,图中服 ...

  3. 网络编程--使用TCP协议发送接收数据

    package com.zhangxueliang.tcp; import java.io.IOException; import java.io.OutputStream; import java. ...

  4. 网络编程: 基于TCP协议的socket, 实现一对一, 一对多通信

    TCP协议  面向连接 可靠的 面向字节流形式的 tcp是基于链接的,必须先启动服务端,然后再启动客户端去链接服务端 TCP协议编码流程: 服务器端:                 客户端 实例化对 ...

  5. C# socket网络编程 基于TCP协议

    socket 服务器端: 1.创建socket Socket tcpClient = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ...

  6. Java学习笔记53(网络编程:TCP协议案例)

    简易的案例 客户端: package demo; import java.io.IOException; import java.io.InputStream; import java.io.Outp ...

  7. 【网络编程1】网络编程基础-TCP、UDP编程

    网络基础知识 网络模型知识 OSI七层模型:(Open Systems Interconnection Reference Model)开放式通信系统互联参考模型,是国际标准化组织(ISO)提出的一个 ...

  8. 嵌入式linux的网络编程(1)--TCP/IP协议概述

    嵌入式linux的网络编程(1)--TCP/IP协议概述 1.OSI参考模型及TCP/IP参考模型 通信协议用于协调不同网络设备之间的信息交换,它们建立了设备之间互相识别的信息机制.大家一定都听说过著 ...

  9. 【转载】[基础知识]【网络编程】TCP/IP

    转自http://mc.dfrobot.com.cn/forum.php?mod=viewthread&tid=27043 [基础知识][网络编程]TCP/IP iooops  胖友们楼主我又 ...

随机推荐

  1. jQuery操作radiobutton

    1.获取某个radio选中的值,有三种方法 $("input:radio:checked").val()(*我最喜欢)  ; $("input[type='radio'] ...

  2. 【Oracle】Oracle时间日期格式

    to_date("要转换的字符串","转换的格式")   两个参数的格式必须匹配,否则会报错. 即按照第二个参数的格式解释第一个参数. to_char(日期,& ...

  3. 完全卸载Oracle方法、步骤

    完全卸载Oracle方法: 软件环境: 1.Windows XP + Oracle 10g 2.Oracle安装路径为:d:\Oracle 1.如果数据库配置了自动存储管理(ASM),应该先删除聚集同 ...

  4. C# 格式化字符串,日期,字符串操作汇总

    时间格式化 有时候我们要对时间进行转换,达到不同的显示效果 默认格式为:2005-6-6 14:33:34 如果要换成成200506,06-2005,2005-6-6或更多的该怎么办呢 我们要用到:D ...

  5. 来自于2016.2.24的flag

    今天又做了一套xj模拟题-------打比赛这种事情变得越来越无聊了------既影响自己的计划(虽然看起来很难完成的样子),又扰乱心情.而且题目大都是学习算法之类的,与计划不接轨就非常没有兴趣. 然 ...

  6. Code[VS] 1022 覆盖 题解

    Code[VS] 1022 覆盖 题解  Hungary Algorithm 题目传送门:Code[VS] 1022 题目描述 Description 有一个N×M的单位方格中,其中有些方格是水塘,其 ...

  7. locale的设定及其LANG、LC_ALL、LANGUAGE环境变量的区别

    locale这个单词中文翻译成地区或者地域,其实这个单词包含的意义要宽泛很多.Locale是根据计算机用户所使用的语言,所在国家或者地区,以及当地的文化传统所定义的一个软件运行时的语言环境. [ora ...

  8. Install the Maven in your computer

    While, this blog will talk about installing the Maven in your computer. There are three steps as fol ...

  9. Jquery Ajax方法传值到action

    假设cshtml文件中是这样的: <script type="text/javascript"> $(document).ready(function(){ $(&qu ...

  10. ZeroclipboardJS+flash实现将内容复制到剪贴板实例

    Zeroclipboard 的实现原理 Zeroclipboard 利用 Flash 进行复制,之前有 Clipboard Copy 解决方案,其利用的是一个隐藏的 Flash.但最新的 Flash ...