在C#中實現Socket數據接收,可以使用System.Net.Sockets命名空間中的Socket類。以下是一個示例代碼:
using System;
using System.Net;
using System.Net.Sockets;
using System.Text;
public class SocketReceiver
{
private const int BUFFER_SIZE = 1024;
public static void Main()
{
StartListening();
}
private static void StartListening()
{
// 創建Socket對象
Socket listener = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
// 綁定IP地址和端口
IPAddress ipAddress = IPAddress.Parse("127.0.0.1");
IPEndPoint localEndPoint = new IPEndPoint(ipAddress, 8888);
listener.Bind(localEndPoint);
// 開始監聽
listener.Listen(10);
Console.WriteLine("等待客戶端連接...");
while (true)
{
// 接收連接請求
Socket handler = listener.Accept();
Console.WriteLine("客戶端已連接");
byte[] buffer = new byte[BUFFER_SIZE];
string data = null;
while (true)
{
// 接收數據
int bytesRead = handler.Receive(buffer);
data += Encoding.ASCII.GetString(buffer, 0, bytesRead);
// 判斷數據是否接收完畢
if (data.IndexOf("<EOF>") > -1)
{
break;
}
}
Console.WriteLine("接收到的數據:" + data);
// 關閉連接
handler.Shutdown(SocketShutdown.Both);
handler.Close();
}
}
}
上述代碼創建了一個Socket對象,綁定了本地IP地址和端口,并開始監聽連接請求。當有客戶端連接成功后,進入數據接收循環,通過Receive方法接收數據,直到接收到結束標記"
注意:上述代碼僅實現了單次數據接收,如果需要持續接收數據,可以將數據處理部分移至循環外部,并修改循環控制條件。