C# socket发送 16进制字节数据0x01 0x02
时间: 2024-11-20 16:43:57 浏览: 9
C#16进制与字符串字节数组之间的转换代码
在C#中,如果你想要通过Socket发送16进制字节数据,如`0x01`和`0x02`,你可以将它们先转换成Byte数组,然后发送给对方。这里是一个简单的示例:
```csharp
using System.Net;
using System.Net.Sockets;
using System.Text;
public byte[] HexToByteArray(string hexString)
{
return Enumerable.Range(0, hexString.Length / 2)
.Select(s => Convert.ToByte(hexString.Substring(s * 2, 2), 16))
.ToArray();
}
public void SendBytesThroughSocket(Socket socket, string hexData)
{
byte[] bytes = HexToByteArray(hexData);
NetworkStream stream = socket.GetStream();
// 发送数据之前,确保连接已建立
if (socket.Connected)
{
stream.Write(bytes, 0, bytes.Length);
Console.WriteLine("Sent {0} bytes to the server:", hexData.Length);
}
else
{
Console.WriteLine("Socket is not connected.");
}
stream.Close();
}
```
在这个例子中,`HexToByteArray`函数接受一个十六进制字符串,将其分割并逐个转换成字节。`SendBytesThroughSocket`方法接收一个Socket对象和十六进制字符串,将其转换成字节数组,并通过网络流发送。
使用这个函数前,记得创建一个Socket实例,并连接到服务器:
```csharp
Socket client = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
client.Connect(new IPEndPoint(IPAddress.Parse("服务器IP地址"), 端口号));
// 调用上面定义的方法发送数据
SendBytesThroughSocket(client, "0x0102");
```
阅读全文