如果我使用:
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());
答案 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这样的体面序列化方法,而不是自己发明一些协议。