Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sockets/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用PHP套接字发送和接收数据_Php_Sockets - Fatal编程技术网

使用PHP套接字发送和接收数据

使用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套接字发送和接收数据

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);

$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');