PHP socket_read到int

时间:2013-06-24 19:49:09

标签: php sockets casting int return

如果我使用:

 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());

3 个答案:

答案 0 :(得分:1)

为什么不阅读manual page。它返回一个字符串。

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

答案 1 :(得分:1)

正如您在manual中看到的那样,socket_read始终返回一个字符串。您应该尝试使用var_dump()来检查变量的实际值。

您是否尝试将任何数字加到该变量上?在autocast中,它可能会起作用。

答案 2 :(得分:0)

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

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

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