簡體   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