在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方法接收数据,直到接收到结束标记"
注意:上述代码仅实现了单次数据接收,如果需要持续接收数据,可以将数据处理部分移至循环外部,并修改循环控制条件。