[英]How to properly write a UDP packet
我试图用我之前写的C ++程序重写我的一些代码,但是我不确定是否/如何正确地写入字节数组,或者我是否应该使用其他东西。 我尝试更改为C#.NET的代码如下。
unsigned char pData[1400];
bf_write g_ReplyInfo("SVC_ReplyInfo", &pData, 1400);
void PlayerManager::BuildReplyInfo()
{
// Delete the old packet
g_ReplyInfo.Reset();
g_ReplyInfo.WriteLong(-1);
g_ReplyInfo.WriteByte(73);
g_ReplyInfo.WriteByte(g_ProtocolVersion.GetInt());
g_ReplyInfo.WriteString(iserver->GetName());
g_ReplyInfo.WriteString(iserver->GetMapName());
}
BinaryWriter
可能会起作用,尽管字符串以前面的7位编码长度编写,但我怀疑客户端将无法处理。 您可能必须将字符串转换为字节,然后添加一个长度字或将其终止0。
无需手动将数字转换为字节。 如果您想将一个long
byte
写为一个byte
,则将其强制转换。 也就是说,如果您的BinaryWriter
是bw
,那么您可以编写bw.Write((byte)longval);
。 要将-1
写入long: bw.Write((long)(-1))
。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.