[英]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.