TCP协议作为以一种建立连接,点对点,双向可靠的数据连接,被广泛的应用
TCP可以做到不丢数据包,可重传,可控制顺序
TCP通过校验和,重传控制,序号标识,滑动窗口、确认应答实现可靠传输。如丢包时的重发控制,还可以对次序乱掉的分包进行顺序控制。
using System;
using System.Text;
using System.Net.Sockets;
using System.Net;
//服务端
namespace TcpDay1___SimpleServer
{
class Program
{
static void Main(string[] args)
{
//创建一个socket
Socket tcpServer = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
//2.绑定IP和端口号
EndPoint point = new IPEndPoint(IPAddress.Parse("127.0.0.1"), 8888);
//绑定方法 绑定IP和端口号
tcpServer.Bind(point);
//3.开始监听,等待用户连接
tcpServer.Listen(100);
//监听方法,最大连接数为100
Console.WriteLine("等待客户端连接");
Socket tcpClient = tcpServer.Accept();
//等待连接,此为阻塞方法
Console.WriteLine("客户端已连接");
//4.接收用户发送的消息
Console.WriteLine(tcpClient.RemoteEndPoint.ToString());
Console.WriteLine(tcpClient.Connected);
byte[] data = new byte[1024];
int length = tcpClient.Receive(data);
//接收数据data
string str = Encoding.UTF8.GetString(data);
//字节数组转换为string
Console.WriteLine("接收到客户端的数据为:" + str);
Console.ReadKey();
}
}
}
using System;
using System.Text;
using System.Net.Sockets;
using System.Net;
//客户端
namespace SimpleClient
{
class Program
{
static void Main(string[] args)
{
Socket tcpClient = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
EndPoint ServerIP = new IPEndPoint(IPAddress.Parse("127.0.0.1"), 8888);
tcpClient.Connect(ServerIP);
byte[] data = Encoding.UTF8.GetBytes("Hello Net World");
tcpClient.Send(data);
Console.ReadKey();
}
}
}