在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地址和端口
號進行通信。
以上是一個簡單的示例,你可以根據需求擴展和修改代碼,以滿足實際的應用場景。