- RU.PHP ------------------------------------------------------------- RU.PHP -
Msg : #9044 [872]
От : Andrew Korovin 2:5020/845 18 июня 04, 17:44
Кому : All 18 июня 04, 21:09
Тема : Сокеты и иже с ними...
-------------------------------------------------------------------------------
* Originally in ru.php
* Crossposted in fluid.local
Hемедленно нажми на RESET, All!
Есть скрипт на PHP. После запуска он устанавливает соединение с двумя серверами
(через socket_create/socket_connect) и пересылает между ними данные.
Сразу после соединения на одном из серверов (прога на Си под FreeBSD)
выскакивает сообщение "recv() failed: Connection reset by peer".
ИМХО, скрипт просто выходит, ничего не пересылая. Что я делаю не так?
Вот сам скрипт:
=== Cut ===
0)
{
$written = socket_write($to, $str, $len);
if ($written === FALSE)
return FALSE;
$temp = "";
for ($i = $len - $written; $i < $len; $i++)
$temp .= $str[$i];
$len -= $written;
$str = $temp;
}
}
return TRUE;
}
// Эти параметры передаются через запрос:
// $host -- один из хостов, к которому мы коннектимся (вида www.microsoft.com)
// $port -- порт на хосте $host
// $cb_port -- порт на втором хосте
$address = gethostbyname($host);
$ssock = socket_create(AF_INET, SOCK_STREAM, SOL_TCP);
if ($ssock < 0) die;
$result = socket_connect($ssock, $address, $port);
if ($result < 0) die;
$result = socket_set_nonblock($ssock);
if (!$result) die;
$csock = socket_create(AF_INET, SOCK_STREAM, SOL_TCP);
if ($csock < 0) die;
$result = socket_connect($csock, "10.20.201.7", $cb_port);
if ($result < 0) die;
$result = socket_set_nonblock($csock);
if (!$result) die;
while (1)
{
if (!transfer($ssock, $csock))
break;
if (!transfer($csock, $ssock))
break;
}
socket_close($ssock);
socket_close($csock);
?>
=== Cut ===
С уважением, Andrew 18 Jun 04 года
... XMMS: Dropped :[
--- Reset - не кнопка, а горькая небходимость.
* Origin: :: FreeSide Mail Server :: Powered by FreeBSD :: (2:5020/845)
При переходе по баннеру - скидка 25% на первый месяц обслуживания! При переходе по баннеру - скидка 25% на первый месяц обслуживания!