こんにちは皆さん、すでに尋ねられている場合は、仮想銃で私を撃たないことを願っていますが、ここに行きます.
私は ip/port に socket_send しています。サーバーがデータを受信して応答していることがわかります。私のコードは xxxx バイトを受け取ります。これらのバイトが IE: xml 文字列に何を伴うのかを知りたいので、アプリケーションでデータを解析して使用することができます。サーバーはヘッダーを受信してもまったく応答しないため、この状況では cURL は実行できません。
**Code:**
/* Create a TCP/IP socket. */
$socket = socket_create(AF_INET, SOCK_STREAM, SOL_TCP);
if ($socket === false) {
echo "socket_create() failed: reason: " . socket_strerror(socket_last_error()) . "\n";
} else {
echo "OK.\n";
}
/* Create a TCP/IP socket. */
$socket = socket_create(AF_INET, SOCK_STREAM, SOL_TCP);
if ($socket === false) {
echo "socket_create() failed: reason: " . socket_strerror(socket_last_error()) . "\n";
} else {
echo "OK.\n";
}
echo "Attempting to connect to '$address' on port '$port'...";
$result = socket_connect($socket, $address, $port);
if ($result === false) {
echo "socket_connect() failed.\nReason: ($result) " . socket_strerror(socket_last_error($socket)) . "\n";
} else {
echo "OK.\n";
}
$in = $xml;
$out = '';
echo "Sending HTTP HEAD request...";
socket_write($socket, $in, strlen($in));
echo "OK.\n";
socket_shutdown($socket, 1);
echo "Reading response:\n\n";
$buf = '';
if (false !== ($bytes = socket_recv($socket, $buf, 2048, MSG_WAITALL))) {
echo "Read $bytes bytes from socket_recv(). Closing socket...";
} else {
echo "socket_recv() failed; reason: " . socket_strerror(socket_last_error($socket)) . "\n";
}
socket_close($socket);
echo $buf . "\n";
echo "OK.\n\n";
?>
応答:
TCP/IP 接続は正常です。わかった。ポート「9000」で「xxx.xxx.xxx.xxx」に接続しようとしています...OK。HTTP HEAD リクエストを送信しています...OK。読み取り応答: socket_recv() から 1365 バイトを読み取ります。ソケットを閉じています... OK。