C# 如何在C中创建数据包#
我一直想知道一个游戏怎么会产生这样的数据包:C# 如何在C中创建数据包#,c#,packets,C#,Packets,我一直想知道一个游戏怎么会产生这样的数据包: 22 00 11 00 6D 79 75 73 65 72 6E 61 6D 65 00 00 00 00 00 00 6D 79 70 61 73 73 77 6F 72 64 00 00 00 00 00 00 LENGTH-HEADER-USERNAME-PASSWORD 在游戏代码中,它们的功能应该是什么,或者它们是如何编写类似的东西的?它仅仅是编码.ASCII.GetBytes(“一些字符串值”)?尽管我怀疑它是这样写的 每次我试图问某
22 00 11 00 6D 79 75 73 65 72 6E 61 6D 65 00 00 00 00 00 00 6D 79 70 61 73 73 77 6F 72 64 00 00 00 00 00 00
LENGTH-HEADER-USERNAME-PASSWORD
在游戏代码中,它们的功能应该是什么,或者它们是如何编写类似的东西的?它仅仅是编码.ASCII.GetBytes(“一些字符串值”)
?尽管我怀疑它是这样写的
每次我试图问某人这个问题时,他都认为我想分析数据包。我不知道-我想知道我需要做什么才能创建一个像上面那样的数据包,用C#编写。您输入的示例代码应该将字符串转换为字节数组。根据您使用的编码(例如ASCII、Unicode等),您可能会从同一字符串中获得不同的字节数组 “数据包”一词通常在通过网络发送数据时使用;但数据包本身只是字节数组 你得到的信息是我的用户名,密码。下面的C代码将为您翻译
byte[] packet = new byte[] { 0x22, 0x00, 0x11, 0x00, 0x6D, 0x79, 0x75, 0x73, 0x65, 0x72, 0x6E, 0x61, 0x6D, 0x65, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x6D, 0x79, 0x70, 0x61, 0x73, 0x73, 0x77, 0x6F, 0x72, 0x64, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 };
string test = Encoding.ASCII.GetString(packet);
Console.WriteLine(test);
Console.ReadKey();
因此,要创建类似的内容,我会尝试:
const int HeaderLength = 2;
const int UsernameMaxLength = 16;
const int PasswordMaxLength = 16;
public static byte[] CreatePacket(int header, string username, string password)//I assume the header's some kind of record ID?
{
int messageLength = UsernameMaxLength + PasswordMaxLength + HeaderLength;
StringBuilder sb = new StringBuilder(messageLength+ 2);
sb.Append((char)messageLength);
sb.Append(char.MinValue);
sb.Append((char)header);
sb.Append(char.MinValue);
sb.Append(username.PadRight(UsernameMaxLength, char.MinValue));
sb.Append(password.PadRight(PasswordMaxLength, char.MinValue));
return Encoding.ASCII.GetBytes(sb.ToString());
}
然后调用以下代码:
byte[] myTest = CreatePacket(17, "myusername", "mypassword");
当然,使用字符串生成器与数据包结构相差甚远,您必须使用byte[]并通过索引向其添加值。考虑到您在前面的类似问题中对prevision链接评论的负面反应,我不愿意发布此消息,但可能会有所帮助?游戏或网络数据包??需要更多的解释这是一个从游戏中嗅出的小包。这个问题缺少显示您确实知道如何发送某些内容的代码,说明如何发送特定数据要比说明如何发送数据容易得多。我知道发送消息的唯一方法是使用socket.send(Encoding.ASCII.GetBytes(“Hello World”);发送类似Hello World这样的字符串消息;。但我完全不知道如何发送包含长度id用户名密码的数据消息好吧,我理解,但我想知道的是这样的数据包是如何创建的?我的意思是如何为服务器编写数据消息?伙计,我不想翻译,我想知道这样的东西是如何从(数据包)开始创建的?!!。假设我想发送一个具有这种结构的数据包:大小、头、用户名、密码。我该怎么办?看看这里的例子,它们可能涵盖了你想要的东西:对不起,虽然我不想让你生气,但我在乞求一个正确的答案!。我想要的不是向世界问好。我想知道如果我想创建一个像上面一样的包,我应该怎么做?(发送数据,如果嗅探给我与上述数据包相同)感谢您的重播,我注意到,从一个时间,但您的评论是感激的。