在 C# 中,使用
TcpClient
类可以实现 TCP 客户端的连接和通信。要接收来自服务器端的数据,可以使用
TcpClient
类的
GetStream()
方法获取网络流(
NetworkStream
),然后使用该流的
Read()
方法读取数据。具体步骤如下:
TcpClient
对象,并连接到服务器端:
TcpClient client = new TcpClient();
client.Connect("服务器IP地址", 端口号);
获取网络流,并创建一个字节数组来存储接收到的数据:
NetworkStream stream = client.GetStream();
byte[] buffer = new byte[1024];
使用 NetworkStream
的 Read()
方法从网络流中读取数据:
int bytesRead = stream.Read(buffer, 0, buffer.Length);
其中,Read()
方法的第一个参数是字节数组,用于存储接收到的数据;第二个参数是偏移量,指定从数组的哪个位置开始存储数据;第三个参数是要读取的数据的最大长度。Read()
方法会返回实际读取的字节数。
将接收到的数据转换为字符串并进行处理:
string message = Encoding.ASCII.GetString(buffer, 0, bytesRead);
// 处理接收到的数据
其中,Encoding.ASCII.GetString()
方法可以将字节数组转换为字符串。第一个参数是要转换的字节数组,第二个参数是偏移量,第三个参数是要转换的字节数。
完整的代码示例如下:
using System;
using System.Net.Sockets;
using System.Text;
class Program
static void Main(string[] args)
TcpClient client = new TcpClient();
client.Connect("服务器IP地址", 端口号);
NetworkStream stream = client.GetStream();
byte[] buffer = new byte[1024];
int bytesRead = stream.Read(buffer, 0, buffer.Length);
string message = Encoding.ASCII.GetString(buffer, 0, bytesRead);
// 处理接收到的数据
stream.Close();
client.Close();
需要注意的是,在实际使用中,可能需要循环接收数据,直到收到完整的消息或连接被关闭。此外,为了确保数据的可靠性,还需要考虑数据的粘包和拆包问题,可以采用一些常用的协议(如 HTTP、WebSocket 等)或自定义协议来解决这些问题。