Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/typo3/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用stream_socket_客户端和php字符串发送二进制消息_Php_Sockets - Fatal编程技术网

使用stream_socket_客户端和php字符串发送二进制消息

使用stream_socket_客户端和php字符串发送二进制消息,php,sockets,Php,Sockets,我正在使用php连接到套接字服务器以发送二进制数据-即非标准ascii(或可打印)字符串。例如,消息可能包含ascii 0或0-255之间的任何数字 例如,我有如下函数: function append_uint16($str, $num) { $str += chr($num % 256); $num /= 256; $str += chr($num); return $str; } $msg = "\xA7\xA7"; $payload_size = 9 + 1 +

我正在使用php连接到套接字服务器以发送二进制数据-即非标准ascii(或可打印)字符串。例如,消息可能包含ascii 0或0-255之间的任何数字

例如,我有如下函数:

function append_uint16($str, $num) {
   $str += chr($num % 256);
   $num /= 256;
   $str += chr($num);
   return $str;
}
$msg = "\xA7\xA7";
$payload_size = 9 + 1 + strlen($param1) + 1 + strlen($param2);
$msg += append_uint16($msg, $payload_size);
function send_msg($host, $port, $msg) {
  $fp = stream_socket_client("tcp://" . $host . ":" . $port, $errno, $errstr, 30);
  if (!$fp) {
       echo "$errstr ($errno)<br />\n";
  } else {
      fwrite($fp, $msg);
  }
}
这就是所谓的:

function append_uint16($str, $num) {
   $str += chr($num % 256);
   $num /= 256;
   $str += chr($num);
   return $str;
}
$msg = "\xA7\xA7";
$payload_size = 9 + 1 + strlen($param1) + 1 + strlen($param2);
$msg += append_uint16($msg, $payload_size);
function send_msg($host, $port, $msg) {
  $fp = stream_socket_client("tcp://" . $host . ":" . $port, $errno, $errstr, 30);
  if (!$fp) {
       echo "$errstr ($errno)<br />\n";
  } else {
      fwrite($fp, $msg);
  }
}
然后我将发送到一个套接字服务器,如下所示:

function append_uint16($str, $num) {
   $str += chr($num % 256);
   $num /= 256;
   $str += chr($num);
   return $str;
}
$msg = "\xA7\xA7";
$payload_size = 9 + 1 + strlen($param1) + 1 + strlen($param2);
$msg += append_uint16($msg, $payload_size);
function send_msg($host, $port, $msg) {
  $fp = stream_socket_client("tcp://" . $host . ":" . $port, $errno, $errstr, 30);
  if (!$fp) {
       echo "$errstr ($errno)<br />\n";
  } else {
      fwrite($fp, $msg);
  }
}
函数发送消息($host,$port,$msg){
$fp=stream\u socket\u client(“tcp://“$host.”:“$port,$errno,$errstr,30”);
如果(!$fp){
回显“$errstr($errno)
\n”; }否则{ fwrite($fp,$msg); } }

但这些信息的格式不正确。我怀疑我的字符串处理不太正确。或者我不能用这种方式在php中使用字符串?有什么想法吗?

你说的“格式不正确”是什么意思?老实说,我不确定,我想我需要把字符串打印成十六进制来检查