<?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";
?>