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,);//侦听的端口号
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协议(一)的更多相关文章
- C#网络编程之---TCP协议的同步通信(二)
上一篇学习日记C#网络编程之--TCP协议(一)中以服务端接受客户端的请求连接结尾既然服务端已经与客户端建立了连接,那么沟通通道已经打通,载满数据的小火车就可以彼此传送和接收了.现在让我们来看看数据的 ...
- 网络编程——基于TCP协议的Socket编程,基于UDP协议的Socket编程
Socket编程 目前较为流行的网络编程模型是客户机/服务器通信模式 客户进程向服务器进程发出要求某种服务的请求,服务器进程响应该请求.如图所示,通常,一个服务器进程会同时为多个客户端进程服务,图中服 ...
- 网络编程--使用TCP协议发送接收数据
package com.zhangxueliang.tcp; import java.io.IOException; import java.io.OutputStream; import java. ...
- 网络编程: 基于TCP协议的socket, 实现一对一, 一对多通信
TCP协议 面向连接 可靠的 面向字节流形式的 tcp是基于链接的,必须先启动服务端,然后再启动客户端去链接服务端 TCP协议编码流程: 服务器端: 客户端 实例化对 ...
- C# socket网络编程 基于TCP协议
socket 服务器端: 1.创建socket Socket tcpClient = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ...
- Java学习笔记53(网络编程:TCP协议案例)
简易的案例 客户端: package demo; import java.io.IOException; import java.io.InputStream; import java.io.Outp ...
- 【网络编程1】网络编程基础-TCP、UDP编程
网络基础知识 网络模型知识 OSI七层模型:(Open Systems Interconnection Reference Model)开放式通信系统互联参考模型,是国际标准化组织(ISO)提出的一个 ...
- 嵌入式linux的网络编程(1)--TCP/IP协议概述
嵌入式linux的网络编程(1)--TCP/IP协议概述 1.OSI参考模型及TCP/IP参考模型 通信协议用于协调不同网络设备之间的信息交换,它们建立了设备之间互相识别的信息机制.大家一定都听说过著 ...
- 【转载】[基础知识]【网络编程】TCP/IP
转自http://mc.dfrobot.com.cn/forum.php?mod=viewthread&tid=27043 [基础知识][网络编程]TCP/IP iooops 胖友们楼主我又 ...
随机推荐
- 【Highcharts】 动态删除series
先绘制,后删除多余 var chart = new Highcharts.Chart(options); if (chart.series.length > result.dataList0.l ...
- Ubuntu 16.04 LTS 安装R及RStudio Server
1.R的安装 1.1首先添加镜像源 # Ctrl+Alt+T打开终端 $ sudo gedit /etc/apt/sources.list # 加入新镜像源 回车之后会自动跳出一个文本框,然后在相似的 ...
- sqlmap使用手册
转自:http://hi.baidu.com/xkill001/item/e6c8cd2f6e5b0a91b7326386 SQLMAP 注射工具用法 1 . 介绍1.1 要求 1.2 网应用情节 1 ...
- Kalman滤波器原理和实现
Kalman滤波器原理和实现 kalman filter Kalman滤波器的直观理解[1] 假设我们要测量一个房间下一刻钟的温度.据经验判断,房间内的温度不可能短时大幅度变化,也就是说可以依经验认为 ...
- SOAPUI测试步骤之流量控制(Conditional Goto)
1. TestSteps流量控制 1.1.有条件转到一步步测试 Conditional Goto拥有任意数量的的XPath表达式伴随相应的目标测试步骤.这些被应用到在先前的采样测试的最近的响应; 配置 ...
- A hard puzzle
A hard puzzle Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Tot ...
- Scheduled Projects
Plans as at 10/03/15 ASB --------> Li ...
- topcoder SRM 618 DIV2 WritingWords
只需要对word遍历一遍即可 int write(string word) { ; ; i < word.length(); ++ i){ cnt+=word[i]-; } return cnt ...
- Codeforces Round #209 (Div. 2) A. Table
#include <iostream> #include <vector> using namespace std; int main(){ int n,m; cin > ...
- NOIP欢乐模拟赛 T1 解题报告
小澳的方阵 (matrix.cpp/c/pas) [题目描述] 小澳最近迷上了考古,他发现秦始皇的兵马俑布局十分有特点,热爱钻研的小澳打算在电脑上还原这个伟大的布局. 他努力钻研,发现秦始皇布置兵马俑 ...