如何正确写入UDP数据包

时间:2011-03-12 05:29:20

标签: c# .net bytearray packet bytebuffer

我试图用我刚才写的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());
}

1 个答案:

答案 0 :(得分:0)

BinaryWriter可能有效,尽管字符串是使用前面的7位编码长度编写的,我怀疑客户端无法处理。您可能必须将字符串转换为字节,然后添加长度字或0终止它。

无需手动将数字转换为字节。如果您要将long写为byte,则只需将其投射。也就是说,如果您的BinaryWriterbw,那么您可以写bw.Write((byte)longval);。要将-1写为长bw.Write((long)(-1))