在C#中進行Socket通信可以使用System.Net.Sockets.Socket
類來實現。
下面是一個簡單的示例,演示如何使用C# Socket進行客戶端和服務器之間的通信:
服務器端:
csharp
using System;
using System.Net;
using System.Net.Sockets;
using System.Text;
public class Server
{
public static void Main()
{
// 創建一個IP地址和端口號
IPAddress ipAddress = IPAddress.Parse("127.0.0.1");
int port = 8888;
// 創建一個TCP監聽器
TcpListener listener = new TcpListener(ipAddress, port);
listener.Start();
Console.WriteLine("服務器已啟動...");
// 接受客戶端連接
TcpClient client = listener.AcceptTcpClient();
Console.WriteLine("客戶端已連接...");
// 獲取網絡流
NetworkStream networkStream = client.GetStream();
// 接收消息
byte[] buffer = new byte[1024];
int bytesRead = networkStream.Read(buffer, 0, buffer.Length);
string message = Encoding.ASCII.GetString(buffer, 0, bytesRead);
Console.WriteLine("接收到的消息: " + message);
// 發送響應消息
string responseMessage = "Hello from the server!";
byte[] responseData = Encoding.ASCII.GetBytes(responseMessage);
networkStream.Write(responseData, 0, responseData.Length);
Console.WriteLine("響應消息已發送.");
// 關閉連接
client.Close();
listener.Stop();
}
}
客戶端:
csharp
using System;
using System.Net;
using System.Net.Sockets;
using System.Text;
public class Client
{
public static void Main()
{
// 創建一個IP地址和端口號
IPAddress ipAddress = IPAddress.Parse("127.0.0.1");
int port = 8888;
// 創建一個TcpClient實例并連接服務器
TcpClient client = new TcpClient();
client.Connect(ipAddress, port);
// 獲取網絡流
NetworkStream networkStream = client.GetStream();
// 發送消息
string message = "Hello from the client!";
byte[] requestData = Encoding.ASCII.GetBytes(message);
networkStream.Write(requestData, 0, requestData.Length);
Console.WriteLine("消息已發送.");
// 接收響應消息
byte[] buffer = new byte[1024];
int bytesRead = networkStream.Read(buffer, 0, buffer.Length);
string responseMessage = Encoding.ASCII.GetString(buffer, 0, bytesRead);
Console.WriteLine("接收到的響應消息: " + responseMessage);
// 關閉連接
client.Close();
}
}
在上述示例中,服務器端通過創建TCP監聽器并等待客戶端連接。一旦客戶端連接成功,服務器端就會接收到客戶端發送
的消息,并返回一個響應消息。客戶端通過創建TcpClient實例并連接到服務器,然后發送消息并接收響應消息。
請注意,這只是一個簡單的示例,可能需要根據你的具體需求進行適當修改。此外,還需要處理異常和錯誤情況,并進行
適當的錯誤處理和資源釋放。