c# TCP以16进制收发数据
时间: 2024-09-23 21:07:21 浏览: 43
C# TCP 客户端,收发16进制案例源码
在C#中,TCP通信通常涉及到字节流的操作,包括以16进制的形式发送和接收数据。这是因为网络传输底层就是基于字节的数据包。以下是一个简单的示例,展示了如何使用`Socket`类以16进制形式处理数据:
首先,你需要创建一个TCP服务器或客户端,并定义一个方法来处理数据的发送和接收:
```csharp
using System.Net;
using System.Net.Sockets;
using System.Text;
public class HexTcpClient
{
private readonly TcpClient client;
public HexTcpClient(TcpClient tcpClient)
{
this.client = tcpClient;
}
// 发送16进制数据
public void SendHex(string hexData)
{
byte[] bytes = Encoding.ASCII.GetBytes(hexData);
foreach (byte b in bytes)
client.GetStream().Write(BitConverter.GetBytes(b), 0, 1); // 使用BitConverter将每个字节转换回16位二进制并发送
}
// 接收16进制数据
public string ReceiveHex()
{
StringBuilder sb = new StringBuilder();
using (var stream = client.GetStream())
{
var buffer = new byte[1];
while (stream.ReadByte() != -1)
{
byte b = buffer[0];
if (BitConverter.IsLittleEndian)
Array.Reverse(buffer); // 如果是小端模式,需要反转字节顺序
sb.Append(BitConverter.ToString(buffer).Replace("-", ""));
}
}
return sb.ToString().ToUpper(); // 返回十六进制字符串(无前导 '0x')
}
}
// 示例使用
TcpClient client = new TcpClient("localhost", 12345); // 连接到服务器
HexTcpClient hexClient = new HexTcpClient(client);
hexClient.SendHex("48656C6C6F"); // 发送 "Hello" 的16进制表示
string receivedHex = hexClient.ReceiveHex(); // 接收数据并打印
```
阅读全文