Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Flash > сокеты


Автор: иван 4.5.2005, 20:53
Если у кого есть исходник где инфа по сокету от клиента к серваку и обратно гоняет то хотелось бы взглянуть на серверную сторону (интересует либо Perl либо PHP).

Автор: AntonioBanderaz 4.5.2005, 23:06
Код

<?php
// Разрешаем скрипту выполняться неограниченно долго
// (сервер - это программа-демон, которая работает в бесконечном цикле)
set_time_limit (0);
// Записываем в переменную IP-номер домена, на котором располагается скрипт
$address=gethostbyname($_SERVER['SERVER_NAME']);
$port=10000; // Записываем номер порта, отведенный под сокет-сервер
// Инициализируем новый сокет
$sock=socket_create(AF_INET,SOCK__STRSAM, 0);
// Связываем сокет с IP и портом
socket_bind($sock,$address,$port);
// Включаем сокет-сервер в режим прослушивания вызовов от сокетов-клиентов
socket_listen($sock,5);
// Запускаем бесконечный цикл, в котором проверяем, не присоединился ли
// к сокету-серверу клиент
while (1) {
$acc=socket_accept($sock);
// Если соединения нет, то сразу перехолим к следующей итерации
if (!$acc) {
continue 1;
}
// Если клиент присоединился, то запускаем цикл, в котором считываем
// поступающие от неге данные, и записываем их в строку $buf
$buf='';
while(1) {
$buf.=socket_read[$acc,204S); // Считываем доступные данные
// Если от клиента поступает команда close, то отключаем соединение
if {$buf=='close\0') {
socket_close($acc);
break 2;
}
// Если от клиента поступает команда quit, то останавливаем работу
// сервера
if ($buf=='quit\0') {
break 1;
}
// Если новую партию считанного текста завершает нулевой байт,
// значит сообщение закончено. Его нужно переслать назад клиенту,
// и начать цикл сначала.
if(substr($buf,strlen($buf)-1,1)=='\0')){
socket_write($acc,$buf);
$buf='';
}
}
}

Автор: иван 5.5.2005, 21:07
Респект.
А может быть такое что на серваке рнр настройки или версия не подерживают сокеты?

Автор: AntonioBanderaz 6.5.2005, 06:30
Ну во первых, такую прогу не разрешат запустить на серваке, она будет выполняться сколь угодно долго, т.е. висит в бесконечном цикле... Они же не знают что Ты там делаешь, может Ты пароли к чему-нгидь подбираешь или ещё что, короче - облом.... Ты бы в PHP форум написал, а то как-то не по теме выходит.... smile

Автор: VoAnt 12.5.2005, 13:51
Выложи плз текст флеша к-й постоянно подключен к такому серваку!

Автор: AlDev 12.5.2005, 14:43
Вообще для реализации сетевых решений на Flash был сделан Macromedia Flash Communication Server...
http://macromedia.com/software/flashcom/
и есть ещё вот такая технология:
http://macromedia.com/software/flashremoting/

А по-поводу сокетов,
Цитата

Example
The following example uses XMLSocket.connect() to connect to the host where the SWF file resides and uses trace to display the return value indicating the success or failure of the connection:

var socket:XMLSocket = new XMLSocket()
socket.onConnect = function (success:Boolean) {
  if (success) {
    trace ("Connection succeeded!")
  } else {
    trace ("Connection failed!")
  }
}
if (!socket.connect(null, 2000)) {
  trace ("Connection failed!")
}


вообщем смотри класс XMLSocket

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)