PHP 作为SocketClient发送字节数组

<?php
/*includes*/
$ROOT_PATH = dirname ( __FILE__ );  
require ($ROOT_PATH . "/Bytes.php");  

error_rePORTing(E_ALL);
set_time_limit(0);
$PORT = 12345;
$IP = "127.0.0.1";

echo "<h2>Socket Connection</h2>\n";

/*
 +-------------------------------
 *    @socket连接整个过程
 +-------------------------------
 *    @socket_create
 *    @socket_connect
 *    @socket_write
 *    @socket_read
 *    @socket_close
 +--------------------------------
 */

$socket = socket_create(AF_INET, SOCK_STREAM, SOL_TCP);
if ($socket < 0) {
    echo "socket_create() failed: reason: " . socket_strerror($socket) . "\n";
}else {
    echo "OK.\n";
}

echo "试图连接 '$IP' 端口 '$PORT'...\n";
$result = socket_connect($socket, $IP, $PORT);
if ($result < 0) {
    echo "socket_connect() failed.\nReason: ($result) " . socket_strerror($result) . "\n";
}else {
    echo "连接OK\n";
}

//模拟写入一个11月8号的数据包
$data = array(0x2F,0x3A,0x3D,0x2B,0xC8,0x00,0x75,0x00,0x11,0x85,0x10,0x09,0x16,0x20,0x9B,0x03,0xFF,0x00,0x98,0x00,0x5D,0x01,0xB4,0x00,0x6D,0x00,0xAC,0x00,0x00,0x00,0x00,0x00,0xF4,0x01,0x00,0x00,0xFF,0x7F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0x7F,0x5B,0xB6,0x2F,0x42,0x04,0xA4,0xFA,0x42,0x00,0x80,0x6C,0x43,0xC6,0xDA,0xE3,0x0C);
$msg = Bytes::toStr ($data);  //将byte数组转换为字符串
$dataToString = strtoupper(bin2hex($msg));//only for debug

if(!socket_write($socket, $msg, strlen($msg))) {
    echo "socket_write() failed: reason: " . socket_strerror($socket) . "/n";
}else {
    echo "发送到服务器信息成功!\n";
    echo "发送的内容为:<font color='red'>$msg</font> <br>\n";
    echo "发送的数组为:<font color='red'>$dataToString</font> <br>\n\n";
}

$out = '';
while($out = socket_read($socket, 8192)) {
    echo "接收服务器回传信息成功!\n";
    echo "接受的内容为:<br>$out<br>\n";
    $dataToString = strtoupper(bin2hex($out));
    echo "接受的数组为:<font color='red'>$dataToString</font> <br>\n";
}

echo "关闭SOCKET...\n";
socket_close($socket);
echo "关闭OK\n";
?>

 

转载于:https://my.oschina.net/sfshine/blog/790971

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值