<?php
$host='127.0.0.1;
$port= 8080;
$socket = socket_create(AF_INET, SOCK_STREAM, SOL_TCP);
if(!$socket){
exit('创建socket失败');
}
$result = socket_connect($socket,$host,$port);
$message = "recharge";
$mlength = strlen($message);
$length = strlen($message) + 3;
$fmt_data = pack("sA".$mlength."C", $length, $message, 0);
var_dump(strval($fmt_data));
$result=socket_write($socket,$fmt_data);
if(!$result){
exit('发送信息失败');
}
$out = socket_read($socket,128);
$recvmessage = strlen($out)-3;
$ufmt_data = unpack("slenth/A".$recvmessage."meg/Cend",$out);
var_dump($ufmt_data);
socket_close($socket);
附:
format参数中文说明:
pack/unpack 的摸板字符字符 含义
a 一个填充空的字节串
A 一个填充空格的字节串
b 一个位串,在每个字节里位的顺序都是升序
B 一个位串,在每个字节里位的顺序都是降序
c 一个有符号 char(8位整数)值
C 一个无符号 char(8位整数)值;关于 Unicode 参阅 U
d 本机格式的双精度浮点数
f 本机格式的单精度浮点数
h 一个十六进制串,低四位在前
H 一个十六进制串,高四位在前
i 一个有符号整数值,本机格式
I 一个无符号整数值,本机格式
l 一个有符号长整形,总是 32 位
L 一个无符号长整形,总是 32 位
n 一个 16位短整形,“网络”字节序(大头在前)
N 一个 32 位短整形,“网络”字节序(大头在前)
p 一个指向空结尾的字串的指针
P 一个指向定长字串的指针
q 一个有符号四倍(64位整数)值
Q 一个无符号四倍(64位整数)值
s 一个有符号短整数值,总是 16 位
S 一个无符号短整数值,总是 16 位,字节序跟机器芯片有关
u 一个无编码的字串
U 一个 Unicode 字符数字
v 一个“VAX”字节序(小头在前)的 16 位短整数
V 一个“VAX”字节序(小头在前)的 32 位短整数
w 一个 BER 压缩的整数
x 一个空字节(向前忽略一个字节)
X 备份一个字节
Z 一个空结束的(和空填充的)字节串
@ 用空字节填充绝对位置