2013-02-15 151 views
0

我需要发送一些数据到一个IP地址与UDP。我不知道如何格式化我的字符串。我需要发送多个数据包吗?如何在Java中格式化UDP数据包?

从开发者页面我只得到这样的信息: enter image description here

那我该怎么办?在正确的部分,它是我需要发送的字符串。

任何人都可以解释什么意思是“挑战”?

从开发者网站:

游戏服务器已经初始化后不久,它选择了两个主服务器“加入”。为了让客户在点击“Internet”标签时看到特定的游戏服务器,游戏服务器必须存在于Steam主服务器的记录中。 游戏服务器发送每个主服务器“q”(71)。 主服务器分别通过发送FF FF FF FF 73 0A,然后是(相对)唯一的4字节“挑战”号码进行响应。如果您向主服务器发送无效挑战,您将会收到另一个挑战作为回应。

这是什么意思?

FF FF FF FF 73 0A

+1

那些是十六进制数字。它们具有0-9和A-F的数字,因为它们基于16 ...发送“FF FF FF FF 73 0A”意味着发送代表所述值的6个字节。你确定你已经准备好接受你正在进行的项目吗? – Fildor 2013-02-15 16:01:32

回答

3

正如我在评论中写道,你需要发送的字节数,不是一个真正的字符串。因此,您必须查明服务器是否可以使用ascii编码或其他不同的方式,然后以正确的编码获取字符串的字节。

当文件谈到“发送FF 73 ...”时,它意味着发送字节。它是基数为16的数字(=“十六进制”)。是例如创建像这样的字节“FF”:

byte b = 0xFF; // Hex for 255 

当有关发送的“q(71)的”实况会谈这意味着发送其编码在ASCII中,字母“Q”的一个字节(0x71)。

关于“挑战”,请阅读Wikipedia,并深入了解开发者文档。我相信他们会在这件事上多说一些。

关于在Java中使用UDP,你可以参考很多例子和tutorials from oracle

我希望这对你有帮助。祝你好运。

+0

这是发送数据的正确形式吗? byte [] buff =“q”.getBytes(); – 2013-02-16 15:24:34

+0

是的。但要小心编码。对于仅用于ascii的内容,没关系。 – Fildor 2013-02-16 16:22:11