【发布时间】:2014-09-29 05:23:49
【问题描述】:
如何将数据发送到监听终端?!?! (见任务)
情景是:
我有一个正在监听 IP:PORT 的终端,例如192.168.1.100:12345
我创建一个套接字并像这样连接
$socket = socket_create(AF_INET, SOCK_STREAM, 0);
$result = socket_connect($socket, $host, $port);
现在我想将数据写入套接字。我的数据看起来像:
0x06 0x01 0x07 0x04 0x00 0x00 0x00 0x00 0x00 0x69
实际上终端应该在显示屏上显示0.69 cent。但我也需要在0x69 前面发送数据。
我正在发送类似的数据
socket_write($socket, $data, strlen($data));
我已经阅读了一些关于 php pack() 函数的信息并尝试了这个...
$data = pack( "C", "\x06\x01\x07\x04\x00\x00\x00\x00\x00\x69" );
我也尝试过的是
$data = pack("c","\x06\x01\x07\x04\x00\x00\x00\x00\x00\x69");//nothing happens
$data = "0x06 0x01 0x07 0x04 0x00 0x00 0x00 0x00 0x00 0x69";//nothing happens
但这不起作用。
我的朋友用 c++ 编写了一个程序,它很容易运行。
任务
任务是以8位格式和十六进制发送数据。
编辑
【问题讨论】:
-
我会试试
pack("c");(小写) -
我见过期望数据以十六进制字符串而不是二进制形式发送的应用程序。意思是你发送字符串(!)
"0x06 0x01 0x07 0x04 0x00 0x00 0x00 0x00 0x00 0x69"..你试过这个吗? -
@hek2mgl 是的,这是我的第一次尝试,但终端什么也没做 :) 我应该为您提供 c++ 代码吗?
-
可以调试另一端吗?意思是目标计算机?你能展示一下你朋友的 C++ 程序吗?
-
@hek2mgl 我在帖子底部添加了 c++ 代码