新建一个Unity项目新建脚本编写客户端
using System.Net.Sockets;
using System.Net;
using System;
using System.Text;
public class Client : MonoBehaviour
{
    private Socket socket;
    //定义用来存消息的容器
    private byte[] buffer = new byte[1024];
    // Start is called before the first frame update
    void Start()
    {
        //参数: IPV4协议, 套接字的传输类型(流式传输), socket传输协议(TCP)
        socket = new Socket(AddressFamily.InterNetwork,SocketType.Stream ,ProtocolType.Tcp);  
        //连接服务器: 服务器IP, 服务器端口号
        socket.Connect("127.0.0.1", 6666);  //连接完成
        //连接成功调用接收方法异步接收消息
        StartReceive();
        //连接成功发送消息
        Send();
    }
    //接收消息
    void StartReceive()
    {
        socket.BeginReceive(buffer,0,buffer.Length,SocketFlags.None,ReceiveCallback,null);
    }
    
    //接收消息的回调方法(作为参数传递的函数)
    void ReceiveCallback(IAsyncResult iar)
    {
        //接收返回消息长度
        int len = socket.EndReceive(iar);
        //接收为0代表终止连接
        if (len == 0)
        {
            return;
        }
        //解析buffer
        string str = Encoding.UTF8.GetString(buffer, 0, len);
        Debug.Log(str);
        //解析完在执行接收方法 
        StartReceive();
    }
    void Send()
    {
        socket.Send(Encoding.UTF8.GetBytes("服务器你好,我是客户端!"));
    }
    // Update is called once per frame
    void Update()
    {
        
    }
} 
创建一个空物体挂载客户端脚本

新建一个窗体应用编写服务端
using System.Net.Sockets;
using System.Net;
using System;
using System.Text;
public class Program
{
    private static Socket socket;
    private static byte[] buffer = new byte[1024];
    static void Main(string[] args)
    {
        //初始化
        socket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
        //绑定
        socket.Bind(new IPEndPoint(IPAddress.Any, 6666));
        //监听:  挂起的连接队列最大长度 —— 同时处理连接请求的最大数,超出最大数会排队等待
        socket.Listen(0);
        StartAccept();
        Console.Read(); //阻塞住让程序不会结束
    }
    //开始应答
    static void StartAccept()
    {
        //开始异步应答连接   参数: 回调函数,object
        socket.BeginAccept(AcceptCallback, null);
    }
    static void AcceptCallback(IAsyncResult iar)
    {
        //异步接受传入的连接尝试,并创建新的 Socket 来处理远程主机通信。
        Socket client = socket.EndAccept(iar);
        //开始接收
        StartReceive(client);
        //重新开始应答
        StartAccept();
    }
    //接收消息
    static void StartReceive(Socket client)
    {
        //开始从连接的 Socket 中异步接收数据
        client.BeginReceive(buffer, 0, buffer.Length, SocketFlags.None, ReceiveCallback, client);
    }
    //回调函数
    static void ReceiveCallback(IAsyncResult iar)
    {
        Socket client = iar.AsyncState as Socket;
        //结束接收返回消息长度
        int len = client.EndReceive(iar);
        //接收为0代表终止连接
        if (len == 0)
        {
            return;
        }
        //解析buffer
        string str = Encoding.UTF8.GetString(buffer, 0, len);
        Console.WriteLine(str);
        //解析完在执行接收方法 
        StartReceive(client);
    }
}
 
先运行服务端然后运行客户端

















![[Mac软件]Adobe Illustrator 2024 28.3 intel/M1/M2/M3矢量图制作软件](https://img-blog.csdnimg.cn/img_convert/9fbdf02f4763f294ebb3e44b2d59ca0a.png)

![[gic]-linux和optee的中断处理流程举例(gicv3举例)](https://img-blog.csdnimg.cn/20200702112804594.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80MjEzNTA4Nw==,size_16,color_FFFFFF,t_70)
