сокеты

1. 3DwEp (16.09.2010 / 15:43)
Помогите. никак не пойму. Мне нужно отправить с помощью сокетов:
PRIVMSG 0 :test
на
адрес: 95.172.133.164
порт: 6667
============
покажите на примере, как это сделать

2. Александр (17.09.2010 / 10:05)
<?php
    $sock = socket_create(AF_INET, SOCK_DGRAM, SOL_UDP);
    $msg = "PRIVMSG 0 :test";
    $len = strlen($msg);
    socket_sendto($sock, $msg, $len, 0, '95.172.133.164', 6667);
    socket_close($sock);
?>


3. ктулху (17.09.2010 / 10:41)
А порт то TCP или UDP?
Можно ещё так:
<?php
$text='PRIVMSG 0 :test';
$fp=fsockopen("95.172.133.164", 6667);
fputs($fp, $text);
fclose($fp);
?>
Но это только отправка, без чтения ответа

4. delete (17.09.2010 / 11:50)
POST

<?php
/*
*передача данных методом POST через сокет
*автор: nc_soft
*25.08.07
*/

//сайт
$host='site.ru';

//скрипт-обработчик
$path='/index.php';

//данные
$data='a=1&b=2';

//открываем сокет
$fp = @fsockopen("tcp://".$host, 80, $errno, $errstr, 10);
if (!$fp)
{
    die($errstr.':'.$errno);
}
else
{
    $out  = "POST $path HTTP/1.0\r\n";
    $out .= "Host: $host\r\n";
    //указываем что это пост данные
    $out .= "Content-type: application/x-www-form-urlencoded\r\n";
    //указываем количество байт
    $out .= "Content-Length: ". strlen($data) ."\r\n";
    $out .= "Connection: Close\r\n\r\n";

    //посылаем данные
    fwrite($fp, $out.$data);

    $headers='';

    //читаем заголовки
    while ($str = trim(fgets($fp, 4096)))
    $headers .= "$str\n";

    $body='';

    //читаем ответ
    while (!feof($fp))
    $body.= fgets($fp, 4096);

    //закрываем сокет
    fclose($fp);
}

//выводим данные
echo $headers.'<hr/>'.$body;

?>

GET

<?php
/*
*передача данных методом GET через сокет
*автор: nc_soft
*25.08.07
*/

//сайт
$host='wen.ru';

//скрипт-обработчик (получим главную страницу)
$path='/';

//открываем сокет
$fp = @fsockopen("tcp://".$host, 80, $errno, $errstr, 10);
if (!$fp)
{
    die($errstr.':'.$errno);
}
else
{
    $out  = "GET $path HTTP/1.0\r\n";
    $out .= "Host: $host\r\n";
    $out .= "Connection: Close\r\n\r\n";

    //посылаем данные
    fwrite($fp, $out.$data);

    $headers='';

    //читаем заголовки
    while ($str = trim(fgets($fp, 4096)))
    $headers .= "$str\n";

    $body='';

    //читаем ответ
    while (!feof($fp))
    $body.= fgets($fp, 4096);

    //закрываем сокет
    fclose($fp);
}

//выводим данные
echo $headers.'<hr/>'.$body;

?>


5. delete (17.09.2010 / 11:55)
<?php
/*
*подключение к сайту через прокси с использованием socket
*автор: nc_soft
*25.08.07
*/

//используем прокси
$proxy='165.228.130.10';

//порт для прокси
$port='3128';

//сайт
$host='wen.ru';

//запрашиваемая страница
$path='/';

//открываем сокет
$fp = fsockopen("tcp://".$proxy, $port, $errno, $errstr, 10);
if (!$fp)
{
    die("$errstr:$errno");
}
else
{
    //формируем заголовки
    $out  = "GET http://$host$path HTTP/1.0\r\n";
    $out .= "Host: $host\r\n";
    $out .= "Connection: Close\r\n";
    $out .= "\r\n";

    //отправляем запрос
    fwrite($fp, $out);

    //читаем ответ
    while (!feof($fp))
    {
        echo fgets($fp, 1024);
    }

    //закрываем сокет
    fclose($fp);
}

/*
на момент написания snippet этот проксик работал, обычно бесплатные прокси живут не долго, 
поэтому для теста надо найти рабочий
*/

?>

из всего что выложил, можно собрать что тебе нужно.

6. ктулху (17.09.2010 / 12:09)
5, не совсем. Ему не HTTP пакет надо отправлять. А просто строку на определённый TCP\UDP порт

7. delete (17.09.2010 / 12:14)
6. ShiftBHT_есть_чо7, ну там через TCP и передается smile в принципе то что я написал одно и тоже что выложили выше, ток с заголовками для ответа smile там где указан хост, там можно прописать ip адрес че он дал, там где 80, эт порт, тож самое пишим его порт.

8. 3DwEp (17.09.2010 / 12:48)
2,3, а как ответ читать?

9. 3DwEp (17.09.2010 / 12:52)
вообщем вот я через сниффер посмотрел, мне нужно сделать подключение какбэ.. вот так. вот логи сниффера:
[Ответ сервера]
HAAAPSII
HAAAPSI jCFj5vztAC 

[Отправка на сервер]
:ru IDENT 39 -1 4030 :GALA

[Ответ сервера]
DOMAINS galaxy.mobstudio.ru 

[Отправка на сервер]
RECOVER код_востановления 

[Ответ сервера]
REGISTER 258880 arm0xnwh 0 

[Отправка на сервер]
USER 258880 arm0xnw1 0 vaCUNMhEmxW9yhMX0ctzu 

[Ответ сервера]
999 :AUTH OK 

[Отправка на сервер]
ADDONS 43 1 
MYADDONS 43 1 

[Ответ сервера]
LBS 1
874 
875 

[Отправка на сервер]
JOIN 
помогиииитеееее

URL: https://visavi.net/topics/13747