C# 交易数据包采用TCP/IP协议的Socket同步短连接方式。像端口发送报文,并接收返回内容。使用stream.Write写入数据后,服务器返回数据前7位为数据的长度,先获取这前7位字符中的长度,再stream.Read读取全部的内容,示例代码
时间: 2024-12-01 11:29:56 浏览: 3
在C#中,利用TCP/IP协议的Socket进行同步短连接通信时,确实经常用于交易数据包的传输。以下是一个简单的示例代码片段,展示了如何发送报文并处理返回的数据:
```csharp
using System.Net;
using System.IO;
// 创建一个TcpClient实例
TcpClient client = new TcpClient();
client.Connect("your_server_ip", your_server_port);
// 定义一个内存流来存储接收到的数据
MemoryStream receiveBuffer = new MemoryStream();
// 获取输入的报文数据
byte[] sendData = Encoding.UTF8.GetBytes(your_data_to_send); // 用UTF8编码的字符串
// 使用Write方法写入数据到Socket的输出流
NetworkStream networkStream = client.GetStream();
networkStream.Write(sendData, 0, sendData.Length);
// 预读出服务器返回的第一个长度信息
int lengthBytesToRead = 7; // 假设长度字段有7位
byte[] lengthBuffer = new byte[lengthBytesToRead];
networkStream.Read(lengthBuffer, 0, lengthBytesToRead);
// 解析长度信息,计算总数据长度
int totalLength = BitConverter.ToInt32(lengthBuffer, 0);
// 读取剩余的所有数据
receiveBuffer.SetLength(totalLength);
networkStream.Read(receiveBuffer, 0, totalLength);
// 数据接收到后,可以这样处理:
string receivedData = Encoding.UTF8.GetString(receiveBuffer.ToArray());
// 关闭连接
networkStream.Close();
client.Close();
阅读全文