使用PHP套接字发送和接收数据
我正在尝试通过PHP套接字发送和接收数据 Evrything还可以,但当我尝试发送数据时,PHP不会发送任何内容(Wireshark告诉我发送的数据长度为0) 我正在使用以下代码:使用PHP套接字发送和接收数据,php,sockets,Php,Sockets,我正在尝试通过PHP套接字发送和接收数据 Evrything还可以,但当我尝试发送数据时,PHP不会发送任何内容(Wireshark告诉我发送的数据长度为0) 我正在使用以下代码: <?php $address = 'example.com'; $port = 1234; $sock = socket_create(AF_INET, SOCK_STREAM, SOL_TCP); $sockconnect = socket_connect($sock, $address, $port);
<?php
$address = 'example.com';
$port = 1234;
$sock = socket_create(AF_INET, SOCK_STREAM, SOL_TCP);
$sockconnect = socket_connect($sock, $address, $port);
$c = 0;
do {
$c++;
$msg = '<test>Xml data</test>';
socket_write($sock, $msg, strlen($msg));
echo socket_read($sock, 1024 * 100, PHP_NORMAL_READ);
} while ($c < 3);
socket_close($sock);
如果你一次也不检查错误,你怎么知道一切都好呢
考虑以下几点:
您没有使用gethostbyname函数,因此它试图连接到不存在的ip地址
<?php
$address= gethostbyname('yourdata.com');
没有任何错误,但远程主机不会再次回答我。但是,当我通过SocketTest v3.0发送数据时,它可以正常工作是的,它可以在其他主机上工作,但我只需要发送xml数据,因为我的主机不响应来自任何端口(1980除外)的http head请求。当我发送XML数据时,它不会响应我(甚至使用您的示例)。这不是PHP的问题。但是SocketTest(用java编写)在使用相同的操作系统、相同的数据和相同的主机时工作正常。我比较了PHP发送的数据和SocketTest(wireshark)发送的数据,所有发送的包都是相同的。
<?php
$address= gethostbyname('yourdata.com');