同步: Accept Connect
Receive
异步: BeginAccept EndAccept
BeginReceive EndReceive
TCP是一种面向连接的、可靠的、基于字节流的传输层通信协议。
TCP时一种流式协议
流式协议的特点是什么?就像流水连续不断那样,消息之间没有边界。例如send了3条消息(这里的“消息”是指应用层的一个完整的协议包),分别是100字节、50字节、80字节,recv时可能收到的是230字节,就是说一次recv收到了3条消息,需要应用逻辑自己对recv到的数据进行分析,得出完整的消息。能一次recv到多个消息,也可能一次recv到一个半消息或半个消息,都是有可能的,这就是流式协议的特点。
TCP代码实现:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Net;
using System.Net.Sockets;
using System.Text;
using System.Threading.Tasks;
/*IPEndPoint类包含应用程序连接到主机上的服务所需的主机和端口信息,通过组合服务的主机IP地址和端口号,IPEndPoint类形成到服务的连接点。
*在IPEndPoint类中有两个很有用的构造函数:
*public IPEndPoint(long, int);
*public IPEndPoint(IPAddress, int);
*它们的作用就是用指定的地址和端口号初始化IPEndPoint类的新实例*/
namespace Socket_TCP协议_服务器端
{
class Program
{
static void Main(string[] args)
{
//创建Socket
Socket tcpServer = new Socket
(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
//绑定IP和端口号 192.168.0.104
IPAddress address = new IPAddress(new byte[]{192,168,0,104});
//或者IPAddress address = IPAddress.Parse(192,168,0,104);
EndPoint endPoint = new IPEndPoint(address,7788);//IPEndPoint对IP和端口做了一层封装的类
tcpServer.Bind(endPoint);//绑定IP和端口号
tcpServer.Listen(100);//开始监听端口号
Socket clientSocket = tcpServer.Accept();//接受一条客户端连接
//向客户端发送消息