.NET Socket通信入门实例

黑色简洁风格的 Socket 通信代码,适合刚上手.NET 网络开发的朋友。

Socket 通信的原理其实不难理解,就是让两台设备通过网络“说话”。在.NET 里用起来也挺顺的,Socket类功能全,关键是上手也不复杂。

服务器端的思路蛮清晰的:新建 Socket、绑定 IP 和端口、开启监听,等着客户端连进来。客户端也是类似套路,Connect()一下就能搭上线。

收发数据这块儿记住一句话就行:一切都是字节流。所以你发啥都得转成 byte 数组。来回用Send()Receive()搞定,逻辑清爽,响应也快。

下面这段服务器代码挺经典的,逻辑清晰,不多不少刚刚好:

Socket serverSocket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
IPEndPoint ipEndPoint = new IPEndPoint(IPAddress.Any, 12345);
serverSocket.Bind(ipEndPoint);
serverSocket.Listen(10);
while (true)
{
  Socket clientSocket = serverSocket.Accept();
  byte[] buffer = new byte[1024];
  int received = clientSocket.Receive(buffer);
  string data = Encoding.ASCII.GetString(buffer, 0, received);
  Console.WriteLine("Received: " + data);
  string response = "Hello, Client!";
  clientSocket.Send(Encoding.ASCII.GetBytes(response));
}

客户端代码也一样利索:

Socket clientSocket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
IPAddress serverIP = IPAddress.Parse("127.0.0.1");
IPEndPoint serverEndPoint = new IPEndPoint(serverIP, 12345);
clientSocket.Connect(serverEndPoint);
string message = "Hello, Server!";
byte[] data = Encoding.ASCII.GetBytes(message);
clientSocket.Send(data);
byte[] buffer = new byte[1024];
int received = clientSocket.Receive(buffer);
string response = Encoding.ASCII.GetString(buffer, 0, received);
Console.WriteLine("Received: " + response);

如果你想试着跑一跑,不妨找找名为SocketDemo的源码包,通常里面都有完整项目,跑起来一目了然。嗯,对了,别忘了异常和关闭 Socket,别让程序卡住了。

rar 文件大小:388.13KB