Строки PHP не принимает символы из расширенного набора ASCII в функции socket_recv
I have an application where I am receiving data using socket_recv. The data received varies from 07 to ff of hex which i am storing in string. the problem is i am getting data like 3f in hex when i should receive ff. which means the problem is with sign bit. below is the example code
if(socket_recv ( $sock , $str , 6 , MSG_DONTWAIT ) === FALSE) { $errorcode = socket_last_error(); $errormsg = socket_strerror($errorcode); die("Could not receive data: [$errorcode] $errormsg \n"); }
Что я уже пробовал:
Я пробовал отображать полученные данные всеми способами, а также отображать десятичный,шестнадцатеричный эквивалент полученных данных. не уверен, правильно ли я получаю или показываю.
Jochen Arndt
Очистка знакового бита FF дает вам 7F, а не 3F. Сокеты всегда передают байты без изменения содержимого.
Таким образом, изменение происходит, вероятно, где-то еще на передающей или принимающей стороне.
Richard MacCutchan
Вы не проверяете возвращаемое значение, поэтому вы никогда не можете быть уверены точно, сколько данных вы действительно получили.