Итак, у меня есть mIRC, который прослушивает (имейте это в виду) порт 1235, и я попытался создать скрипт php для подключения к такому порту на моем локальном сервере.
Мой localhost - это чистый Apache + PHP с mIRC, запущенным на другом компьютере (внутри локальной сети).
Скрипт работает наполовину как:
1) подключается к порту 1235
2) отправляет $ i
2.1) но с другой стороны сообщение не принимается (иначе я получаю событие чтения носка, но текст не появляется)
3) читает все входящие сообщения корректно
4) он закрывается, когда 'end' является сообщением
барабанная дробь
5) это работает только если функция while отсутствует.
5.1) ака Inifi-загрузка. он показывает только эхо, когда сокет закрыт через 'end'
вот код, который является простым примером, который я нашел на php.net, заранее спасибо:)
<?php
//The Client
error_reporting(E_ALL);
$address = "192.168.1.101";
$port = 1235;
/* 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 "socket successfully created.\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 "successfully connected to $address.\n<br>";
}
$allow = true;
$i = 0;
while ($allow == true)
{
$i++;
echo "Sending $i to server.\n<br>";
socket_write($socket, $i, strlen($i));
$input = socket_read($socket, 2048);
if ($input == 'end') {
$allow = false;
}
echo "Response from server is: $input\n";
sleep(5);
}
echo "Closing socket...";
socket_close($socket);
?>
это то, что я получаю в браузере, после произнесения 'end'
сокет успешно создан.
Попытка подключиться к
«192.168.1.101» в порту
'1235' ... успешно подключен к
192.168.1.101. Отправка 1 на сервер. Ответ от сервера: хорошо
Ответ от сервера: end
это в mIRC:
тест: 89.152.172.21 в!
читать
близко
Blockquote
если я оставил его работать в течение часа, умножьте «чтение» на 60 и «отправка N + 1 на сервер»
но это только показывает ПОСЛЕ закрытия носка (или остановив какое-то время)