初面网初面网

Socket

Socket,翻译过来是套接字,应用于网络通信。

通信需要服务端和客户端。二者可以是一对一,一对多,多对多。

  • 服务端
using System.Text;
using System.Net;
using System.Net.Sockets;

namespace ConsoleApp1;

public class App
{
  static void Main(string[] args)
  {
    // 创建Socket
    Socket tcpServer = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);

    // 绑定ip、端口号
    IPAddress iPAddress = new IPAddress(new byte[]{127,0,0,1});
    EndPoint point = new IPEndPoint(iPAddress, 8081);
    tcpServer.Bind(point);

    // 开始监听
    tcpServer.Listen(10);

    // 闲等:等到有连接,后续的代码才会继续执行
    Socket clientSocket = tcpServer.Accept();

    string msg = "欢迎你";
    byte[] data = Encoding.UTF8.GetBytes(msg);

    // 用返回的socket跟客户端通信
    clientSocket.Send(data);

    // 承接客户端发来的数据
    byte[] data2 = new byte[data.Length];
    int length = clientSocket.Receive(data2);
    string msg2 = Encoding.UTF8.GetString(data2);
    Console.WriteLine(msg2);

    Console.ReadKey();
  }
}
  • 客户端
using System.Net;
using System.Net.Sockets;
using System.Text;

namespace ClientEnd;

public class ClientEnd
{
  static void Main(string[] args)
  {
    // 创建套接字
    Socket tcpClient = new Socket(AddressFamily.InterNetwork,SocketType.Stream, ProtocolType.Tcp);

    // 建立连接请求
    IPAddress iPAddress = IPAddress.Parse("127.0.0.1");
    EndPoint point = new IPEndPoint(iPAddress, 8081);
    tcpClient.Connect(point);

    // 接收数据
    byte[] data = new byte[1024];
    int length = tcpClient.Receive(data);
    string msg = Encoding.UTF8.GetString(data, 0, length);

    Console.WriteLine(msg);

    // 向服务器发送消息
    string backMsg = Console.ReadLine();
    tcpClient.Send(Encoding.UTF8.GetBytes(backMsg));

    Console.ReadKey();
  }
}

更新于 2025/2/26