C# 封装了2个类 TcpClient类和TcpListener类,很方便的创建面向对象的Tcp传输。
Tcp 协议主特点:
面向对象的,2个进程之间通信,必须先进行一个握手,确认连接成功后才传输实际的数据。
全双工,意思 2个进程建立连接后,数据在2个进程之双向流动,A <—> B
点对点,Tcp连接是在2个进程之间,不可能在一个连接中将数据发送给多个接收方。
可靠的数据传输,建立连接后,数据一定能发送到达,并且有些,发送123,接收也是123.
对于服务器和客户端的理解,约定发送请求的一方为客户端,另一端为服务端。
下面创建一个简单的Service和Client演示之间的通信:
1. 创建Server端
需要添加引用:
using System.Net;
using System.Net.Sockets;
Console.WriteLine("Server is running......");
IPAddress ip = new IPAddress(new byte\[\] { 127, 0, 0, 1 });
TcpListener listener = new TcpListener(ip, 8600); //开启了对8600端口的侦听
listener.Start(); //开始侦听
//保持程序不退出
Console.WriteLine($"\\n\\n输入 Q 键退出");
ConsoleKey key;
do
{
key = Console.ReadKey(true).Key;
}
while (key != ConsoleKey.Q);
2. 创建Client 端
Console.WriteLine("Client Running ...");
TcpClient client = new TcpClient();
try
{
client.Connect("localhost", 8600);
}
catch (Exception ex)
{
Console.WriteLine(ex.Message);
}
Console.WriteLine($"Connected.{client.Client.LocalEndPoint} -->{client.Client.RemoteEndPoint}");
Console.WriteLine($"\\n\\n输入 Q 键退出");
ConsoleKey key;
do
{
key = Console.ReadKey(true).Key;
}
while (key != ConsoleKey.Q);
连接到9000端口,都是使用本机测试IP 127.0.0.1来测试的,否则需要一台局域网内的电脑验证,跟换为实际IP也可以的。
先开启服务器侦听,在开启客户端连接,连接成功后显示连接的IP和端口,以及服务器的IP和端口。
服务器:
客户端: