Модераторы: skyboy, MoLeX, Aliance, ksnk
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Помогите разобраться с сокетами 
:(
    Опции темы
Anton Vatchenko
Дата 8.11.2006, 11:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 460
Регистрация: 21.5.2004

Репутация: нет
Всего: -1



Я сижу на платном хостинге, где точно есть PHP, и служба поддержки говорит, что есть поддержка сокетов. Дайте пожалуйста рабочий код простого прослушивания порта, как его запустить, и как проверить, что он работает. Вот, три простых вопроса...

Мой код, который я раскопал:
Код

<?php
error_reporting(E_ALL);

/* Allow the script to hang around waiting for connections. */
set_time_limit(0);

/* Turn on implicit output flushing so we see what we're getting
 * as it comes in. */
ob_implicit_flush();

$address = '193.84.19.67';
$port = 9999;

if (($sock = socket_create(AF_INET, SOCK_STREAM, SOL_TCP)) < 0) {
   echo "socket_create() failed: reason: " . socket_strerror($sock) . "\n";
}

if (($ret = socket_bind($sock, $address, $port)) < 0) {
   echo "socket_bind() failed: reason: " . socket_strerror($ret) . "\n";
}

if (($ret = socket_listen($sock, 5)) < 0) {
   echo "socket_listen() failed: reason: " . socket_strerror($ret) . "\n";
}

do {
   if (($msgsock = socket_accept($sock)) < 0) {
       echo "socket_accept() failed: reason: " . socket_strerror($msgsock) . "\n";
       break;
   }
   /* Send instructions. */
   $msg = "\nWelcome to the PHP Test Server. \n" .
       "To quit, type 'quit'. To shut down the server type 'shutdown'.\n";
   socket_write($msgsock, $msg, strlen($msg));

   do {
       if (false === ($buf = socket_read($msgsock, 2048, PHP_NORMAL_READ))) {
           echo "socket_read() failed: reason: " . socket_strerror($ret) . "\n";
           break 2;
       }
       if (!$buf = trim($buf)) {
           continue;
       }
       if ($buf == 'quit') {
           break;
       }
       if ($buf == 'shutdown') {
           socket_close($msgsock);
           break 2;
       }
       $talkback = "PHP: You said '$buf'.\n";
       socket_write($msgsock, $talkback, strlen($talkback));
       echo "$buf\n";
   } while (true);
   socket_close($msgsock);
} while (true);

socket_close($sock);
?> 



--------------------
user posted image
PM MAIL   Вверх
Anton Vatchenko
Дата 8.11.2006, 11:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 460
Регистрация: 21.5.2004

Репутация: нет
Всего: -1



МОжет запускаю неправильно? А то пишу в адресной строке браузера как обычный php-скрипт. Может его как-то из коммандной строки вызывать надо?


--------------------
user posted image
PM MAIL   Вверх
BobiKK
Дата 8.11.2006, 12:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 655
Регистрация: 1.12.2005
Где: Essen, Deutschlan d

Репутация: 4
Всего: 16



Попробуйте не на low-level интерфейсе. Вам надо разве посылать датаграммы или ещё что-то специфичное?
Вот, попробуйте отсюда:
http://de.php.net/manual/ru/function.fsockopen.php
PM MAIL   Вверх
Anton Vatchenko
Дата 8.11.2006, 12:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 460
Регистрация: 21.5.2004

Репутация: нет
Всего: -1



Там же не прослушивание. Мне не нужно к какому-то серверу лезть. Мне нужно, чтобы мой сервер стал "слушать"...


--------------------
user posted image
PM MAIL   Вверх
Powerhead
Дата 8.11.2006, 23:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 30
Регистрация: 7.11.2006

Репутация: 1
Всего: 2



Тебе придется использовать собственный сервер или колокейшн. Обычный хостинг не позволит тебе слушать порты. 
Что это у тебя за приложение такое?
PM MAIL WWW ICQ   Вверх
Anton Vatchenko
Дата 9.11.2006, 11:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 460
Регистрация: 21.5.2004

Репутация: нет
Всего: -1



Да, действительно не поддерживают сокеты. Я заключал договор, спросил у них про сокеты, они сказали "Да, да, конечно...", а вчера сказали - "Так только исходящие сокеты поддерживаются, слушать нельзя". А смысл мне в них? Так что думаю что кроме сокетов может помочь не рвать связь...

А проблема вот в чем: это мобильный проект. Если я буду общаться через HTTP, то я отправляю запрос 800 байт заголовков + 5 байт нужной информации, и получаю назад аналогичное. Тем более некоторые операторы после разрыва связи берут, и округляют цену за трафик до 10кб. Так что прием-передача полезных 10 байт = 10 кб. Вот такая математика! Пытался как-то решить проблему через FTP, но там нельзя получить уже исполненный скрипт...


--------------------
user posted image
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "PHP"
Aliance
IZ@TOP
skyboy
SamDark
MoLeX

Новичкам:

  • PHP редакторы собираются и обсуждаются здесь
  • Электронные книги по PHP, документацию можно найти здесь
  • Интерпретатор PHP, полную документацию можно скачать на PHP.NET

Важно:

  • Не брезгуйте пользоваться тегами [code=php]КОД[/code] для повышения читабельности текста/кода.
  • Перед созданием новой темы воспользуйтесь поиском и загляните в FAQ
  • Действия модераторов можно обсудить здесь

Внимание:

  • Темы "ищу скрипт", "подскажите скрипт" и т.п. будут переноситься в форум "Web-технологии"
  • Темы с именами: "Срочно", "помогите", "не знаю как делать" будут УДАЛЯТЬСЯ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, IZ@TOP, skyboy, SamDark, MoLeX, awers.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PHP: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0432 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.