在C#中實現(xiàn)Socket通信有多種方式,其中常見的方式是使用System.Net.Sockets
命名空間提供的類。
下面是一個簡單的示例,演示了如何使用Socket進行客戶端和服務(wù)器之間的通信:
1. 客戶端代碼:
csharp
using System;
using System.Net;
using System.Net.Sockets;
using System.Text;
public class Client {
public static void Main() {
// 創(chuàng)建一個Socket對象
Socket clientSocket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
// 連接到服務(wù)器
IPAddress serverIP = IPAddress.Parse("服務(wù)器IP地址");
int serverPort = 12345; // 服務(wù)器端口號
IPEndPoint serverEndPoint = new IPEndPoint(serverIP, serverPort);
clientSocket.Connect(serverEndPoint);
// 發(fā)送數(shù)據(jù)到服務(wù)器
string message = "Hello, server!";
byte[] data = Encoding.ASCII.GetBytes(message);
clientSocket.Send(data);
// 接收服務(wù)器的響應
byte[] buffer = new byte[1024];
int bytesRead = clientSocket.Receive(buffer);
string response = Encoding.ASCII.GetString(buffer, 0, bytesRead);
Console.WriteLine("服務(wù)器響應:" + response);
// 關(guān)閉Socket連接
clientSocket.Shutdown(SocketShutdown.Both);
clientSocket.Close();
}
}
2. 服務(wù)器端代碼:
csharp
using System;
using System.Net;
using System.Net.Sockets;
using System.Text;
public class Server {
public static void Main() {
// 創(chuàng)建一個Socket對象
Socket serverSocket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
// 綁定IP地址和端口號
IPAddress serverIP = IPAddress.Parse("服務(wù)器IP地址");
int serverPort = 12345; // 服務(wù)器端口號
IPEndPoint serverEndPoint = new IPEndPoint(serverIP, serverPort);
serverSocket.Bind(serverEndPoint);
// 開始監(jiān)聽客戶端連接
serverSocket.Listen(10);
Console.WriteLine("等待客戶端連接...");
// 接受客戶端連接請求
Socket clientSocket = serverSocket.Accept();
// 接收客戶端發(fā)送的數(shù)據(jù)
byte[] buffer = new byte[1024];
int bytesRead = clientSocket.Receive(buffer);
string request = Encoding.ASCII.GetString(buffer, 0, bytesRead);
Console.WriteLine("客戶端請求:" + request);
// 發(fā)送響應到客戶端
string response = "Hello, client!";
byte[] data = Encoding.ASCII.GetBytes(response);
clientSocket.Send(data);
// 關(guān)閉Socket連接
clientSocket.Shutdown(SocketShutdown.Both);
clientSocket.Close();
serverSocket.Close();
}
}
在使用上述示例代碼時,需要將服務(wù)器IP地址
替換為實際的服務(wù)器IP地址??蛻舳撕头?wù)器端通過指定的IP地址和端口
號進行通信。
以上是一個簡單的示例,你可以根據(jù)需求擴展和修改代碼,以滿足實際的應用場景。