1

如果我使用:

 socket_read($socket, 1024);

我不知道它返回什么类型的变量。我想把它变成一个int,但我不知道怎么做。
服务器只响应一个数字 (35)。
如果我回显它,我得到 35。如果我将它转换为“(int)”,我得到 0。intval 也返回 0。
我试图将它转换为字符串,并选择第一个字母 (3),但它返回 0。Substr 也不起作用。
我想要一个 int 值,这样我就可以用这个值计算东西。我需要一个 int 来从另一个值计算这个值的 prozentage。
我能做些什么?

编辑:

在 JAVA SERVER SOCKET CODE 中修复了它:

PrintWriter out = new PrintWriter(server.getOutputStream());

而不是使用

DataOutputStream out = new DataOutputStream(server.getOutputStream());
4

3 回答 3

1

为什么不阅读手册页。它返回一个字符串。

尝试print_r找出该字符串的详细信息。可能是二进制的?!

于 2013-06-24T19:54:01.413 回答
1

正如您在手册中看到的,socket_read 总是返回一个字符串。您应该尝试使用var_dump()来检查变量的实际值。

您是否尝试将任何数字与该变量相加?在自动广播中它可能会起作用。

于 2013-06-24T19:59:33.520 回答
0

似乎字符串包含额外的空格,阻止 PHP 将其转换为数字。

因此,我建议您trim()在将其转换为数字之前使用该函数删除空格。或者您可以使用正则表达式删除所有非数字字符$out = preg_replace("/[^0-9]/g", "", $in)

如果这仍然不起作用并且var_dump对您也没有帮助,我建议使用 WireShark 嗅探网络流量以检查来自服务器的数据包。如果您可以控制服务器发送的内容,请使用像 XML 或 JSON 这样的体面的序列化方法,而不是自己发明一些协议。

于 2013-06-24T20:12:12.367 回答