繁体   English   中英

如何正确写入UDP数据包

[英]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 ,则将其强制转换。 也就是说,如果您的BinaryWriterbw ,那么您可以编写bw.Write((byte)longval); 要将-1写入long: bw.Write((long)(-1))

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM