在C#中实现Socket通信有多种方式,其中常见的方式是使用System.Net.Sockets
命名空间提供的类。
下面是一个简单的示例,演示了如何使用Socket进行客户端和服务器之间的通信:
1. 客户端代码:
csharp
using System;
using System.Net;
using System.Net.Sockets;
using System.Text;
public class Client {
public static void Main() {
// 创建一个Socket对象
Socket clientSocket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
// 连接到服务器
IPAddress serverIP = IPAddress.Parse("服务器IP地址");
int serverPort = 12345; // 服务器端口号
IPEndPoint serverEndPoint = new IPEndPoint(serverIP, serverPort);
clientSocket.Connect(serverEndPoint);
// 发送数据到服务器
string message = "Hello, server!";
byte[] data = Encoding.ASCII.GetBytes(message);
clientSocket.Send(data);
// 接收服务器的响应
byte[] buffer = new byte[1024];
int bytesRead = clientSocket.Receive(buffer);
string response = Encoding.ASCII.GetString(buffer, 0, bytesRead);
Console.WriteLine("服务器响应:" + response);
// 关闭Socket连接
clientSocket.Shutdown(SocketShutdown.Both);
clientSocket.Close();
}
}
2. 服务器端代码:
csharp
using System;
using System.Net;
using System.Net.Sockets;
using System.Text;
public class Server {
public static void Main() {
// 创建一个Socket对象
Socket serverSocket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
// 绑定IP地址和端口号
IPAddress serverIP = IPAddress.Parse("服务器IP地址");
int serverPort = 12345; // 服务器端口号
IPEndPoint serverEndPoint = new IPEndPoint(serverIP, serverPort);
serverSocket.Bind(serverEndPoint);
// 开始监听客户端连接
serverSocket.Listen(10);
Console.WriteLine("等待客户端连接...");
// 接受客户端连接请求
Socket clientSocket = serverSocket.Accept();
// 接收客户端发送的数据
byte[] buffer = new byte[1024];
int bytesRead = clientSocket.Receive(buffer);
string request = Encoding.ASCII.GetString(buffer, 0, bytesRead);
Console.WriteLine("客户端请求:" + request);
// 发送响应到客户端
string response = "Hello, client!";
byte[] data = Encoding.ASCII.GetBytes(response);
clientSocket.Send(data);
// 关闭Socket连接
clientSocket.Shutdown(SocketShutdown.Both);
clientSocket.Close();
serverSocket.Close();
}
}
在使用上述示例代码时,需要将服务器IP地址
替换为实际的服务器IP地址。客户端和服务器端通过指定的IP地址和端口
号进行通信。
以上是一个简单的示例,你可以根据需求扩展和修改代码,以满足实际的应用场景。