Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   Серверные технологии и Flash (http://www.flasher.ru/forum/forumdisplay.php?f=62)
-   -   опять сокеты, где не прав? (http://www.flasher.ru/forum/showthread.php?t=66784)

-MS- 16.07.2005 02:00

опять сокеты, где не прав?
 
Вложений: 1
скрипт и флэшка в зипе... проблема такая, запускаем скрипт, запускаем флешку, отправляем первое сообщение, отправляется... отправляем второе сообщение, не приходит обратно... запускаем во второе окошко флешку, приходит сообщение из первого окна которое не отобразилось, отправляем сообщение,возвращается, а после этого все... тишина...
если лень архив качать, код тут
PHP код:

<?php

$address 
'127.0.0.1';
$port 5190;
$max_clients 100;

// массив клиентов
$client = Array();
//массив ожидания чтения из сокетов
$read=Array();

// создаем сокет
$sock socket_create(AF_INETSOCK_STREAM0);
// связываем имя с сокетом
socket_bind($sock$address$port) or die('Could not bind to address');
// прослушиваем соединения
socket_listen($sock);

//зацикливаем соединение
while (true) {
        
//принемаем соединения на сокете и пишем в массив ресурсы
        
for ($i 0$i $max_clients$i++){
                if ((!isset(
$client[$i]['sock']))||($client[$i]['sock'] == null)){
                        
$client[$i]['sock'] = socket_accept($sock);
                        break;
                }
        }
        
//ждем сообщения на сокетах
        
for($i=0;$i<$max_clients$i++){
                if((isset(
$client[$i]['sock']))&&($client[$i]['sock'] != null)){
                        if (
false === ($buf socket_read($client[$i]['sock'], 2048PHP_NORMAL_READ))) {
                                echo 
"socket_read() failed: reason: " socket_strerror($ret) . "\n";
                                break 
3;
                        }
                        
$buf=trim($buf);
                        if (
$buf == 'quit') {
                                
socket_close($client[$i]['sock']);
                                unset(
$client[$i]);
                        }
                        if (
$buf == 'shutdown') {
                                break 
2;
                        }
                        if(
$buf!=""){
                                
$talkback "[".date("h:m")."] $buf<br>".chr(0);
                                echo 
$talkback;
                                for(
$j=0;$j<$max_clients$j++){
                                        if((isset(
$client[$j]))&&($client[$j]['sock']  != null)){
                                                
$stat=socket_write($client[$j]['sock'], $talkbackstrlen($talkback));
                                                while(
$stat==false){
                                                        
socket_write($client[$j]['sock'], $talkbackstrlen($talkback));
                                                }
                                        }
                                }
                        }
                }
        }
}
//закрываем главный сокет
socket_close($sock);
?>


maksim_surguy 19.07.2005 00:07

Flash + PHP + Sockets chat
 
Вложений: 1
Here is a full source(created by me) of simple Flash+PHP+Sockets chat. enjoy. And sorry, I don't have time to explain any line of code.

-MS- 19.07.2005 00:25

пасиб... посмотрим

-MS- 20.07.2005 04:32

Вложений: 1
респекты maksim_surguy, разобрался :) чуток переработал...
кому интересно с моими корявыми пояснениями и чуток попроще(без комнат и имен из цифр :) ) смотрим атач
зы. версия 2.0 будет со списком пользователей и приватом :)

Viktor_UA 29.07.2005 18:06

можно вопрос?
а как ты на своей машине тестишь это? как ты порт открываешь? и как это применять на серверах, ведь там закрытые ж порты или я не прав?

50%LameRa 29.07.2005 21:52

Порты, которые слушает сервер ставяться в настройках сервера.
А теститься такое обычно telnet-oм.

Viktor_UA 29.07.2005 23:11

Как протестировать эти вышерасположенные исходники? у меня не получается!
я у себя запускаю апачи и потом хтмл с флєш чатом! он не может установить соединение! подскажите, почему?
И вообще, что неоходимо сделать?
Заранее благодарен!

-MS- 30.07.2005 01:06

на локалке все работает, на серваке не пробовал
у мя стоит пакет денвер
виктор, а пхп помимо апача у тя стоит? :)
сначаля пхп скрипт запускай, а потом флэшку

Viktor_UA 30.07.2005 16:00

Это безумие. Как последний чайник...не слушает меня комп.
загружаю Апачи, кидаю файлы в апачи, в папку fchat. Открываю браузер и пишу localhost/fchat/chat2.php. ПХП на тенлегу установлено. Браузер мне отвечает
Call to undefined function socket_create() in c:\program files\apache group\Apache\htdocs\fchat\chat2.php

Что не так?

Только что скачал денвер, поставил, закинул туда папку chat с chat2.php and chat.swf. Дальше запускаю, как ті говорил, пхп файл и он мне в ответ снова говорит

Call to undefined function socket_create() in c:\program files\apache group\Apache\htdocs\fchat\chat2.php

Что єто такое? Как с єтим боротся, плиз, подскажи!

50%LameRa 30.07.2005 21:25

это у тебя нет модуля сокетов для Php если у тя денвер качай с сайта.

-MS- 31.07.2005 00:17

да, кстати о птичках... в денвере модуля сокетов нет... надо поставить и в php.ini прописать(он прописан, только коментарием закрыт...)

Viktor_UA 31.07.2005 01:15

скачал пхп 5 и поставил его на денвер и ничего не изменилось! та же ошибка в браузере!

можешь кинуть ссылку на пхп дистрибутив, который ты качал, которым ты пользуешься, плиз! неужели всё так сложно с этими сокетами, млин!? Даже протестировать немогу ничего!

-MS- 31.07.2005 03:52

Вложений: 1
кароче, ставишь денвер
потом копируешь в WebServers\usr\local\php\extensions библиотеку из атача
потом в php.ini находишь:
;extension=php_sockets.dll
и убираешь ; (коментарий снимешь)
запускаешь денвер
тестишь

Viktor_UA 31.07.2005 11:59

Спасибо большое, всё работает! Теперь я прошареный чел :)
Чат пашет, но в браузере, где я запускал пхп-скрипт, после каждого сообщения, которое отправляеться с флэш-чата, пишеться
Notice: Undefined offset: 3 in z:\home\localhost\www\chat\chat2.php on line 151
Notice: Undefined offset: 3 in z:\home\localhost\www\chat\chat2.php on line 53

Я думаю это не страшно, так как всё работает! :D

Viktor_UA 31.07.2005 13:26

Можно вопросик?
Как передать значение нескольких переменных из одного клиента в другой?
Как текст "&var1=var2&var3=var4&var5=var6" , а потом обрабатывать его, или как-то по другому?
Расскажи в двух словах, плиз!

-MS- 31.07.2005 22:53

ну если использовать sendandload, то в так как ты написал
на сокетах... ну придумать скажем служебные слова, которые показывали бы что это передаются перменные, а потом анализировать строку...
ну че нить типа из пхп в клиент
[var]a1=1;a2=2;a3=3
а потом анализировать строку, если вначале [var], то потом идут переменные с присвоеными значениями, разделитель ;
ну это сложно и не нужно :)
хочешь передавать переменные почитай про xml и flash, будет проще

Viktor_UA 01.08.2005 01:42

А ты думашь sendAndLoad() не коректно тут использовать?
Правда вот я сам-то не знаком с этой командой, поэтому принцып работы её не знаю. Хотя с названия всё и так ясно!
А как что ты используешь для обмена переменными?

-MS- 01.08.2005 16:54

видимо не все ясно с названием, кароче надо читать мануалы :) тем более в атаче с чатом есть исходник флэшевский, посмотри, поразбирайся, почитай help

-=VoskreS=- 18.08.2005 18:19

очень интересует такой вопрос . пхп может работать не только как модуль сервера, но и сам по себе (в консоли так сказать). так вот, можно ли сделать пхп-флэш чат без апачи ? т.е. чтоб пхп скрипт был бы как бы сам сервером ?

yrc 19.08.2005 15:27

Цитата:

Сообщение от -MS-
кароче, ставишь денвер
потом копируешь в WebServers\usr\local\php\extensions библиотеку из атача
потом в php.ini находишь:
;extension=php_sockets.dll
и убираешь ; (коментарий снимешь)
запускаешь денвер
тестишь

Слушай, а php обязательно 5-ий должен быть? У меня при вызове скрипта вырубает Apach!!!
Что делать?

nagash 19.08.2005 18:20

смотреть error_log апача.

-MS- 20.08.2005 00:48

а про пхп 5 я помоему ваще ни чего не говорил, у мя денвер стоит, пхп 4.3 вроде, так что ставь денвер и читай выше
про настройку апача и пхп не ко мне

yrc 20.08.2005 15:16

Цитата:

Сообщение от nagash
смотреть error_log апача.

Не знаю что это означает!

[Thu Feb 08 14:48:45 2001] [error] VirtualHost *:8648 -- mixing * ports and non-* ports with a NameVirtualHost address is not supported, proceeding with undefined results
[Thu Feb 08 14:48:45 2001] [warn] (2)No such file or directory: exec() may not be safe
[Thu Feb 08 14:48:45 2001] [warn] (2)No such file or directory: exec() may not be safe
[Thu Feb 08 14:48:45 2001] [warn] (2)No such file or directory: exec() may not be safe
[Thu Feb 08 14:48:45 2001] [warn] (2)No such file or directory: exec() may not be safe
[Thu Feb 08 14:48:45 2001] [warn] (2)No such file or directory: exec() may not be safe
[Thu Feb 08 14:48:45 2001] [warn] (2)No such file or directory: exec() may not be safe
[Thu Feb 08 14:48:45 2001] [warn] (2)No such file or directory: exec() may not be safe
[Thu Feb 08 14:48:45 2001] [warn] (2)No such file or directory: exec() may not be safe
[Thu Feb 08 14:48:45 2001] [warn] (2)No such file or directory: exec() may not be safe
[Thu Feb 08 14:48:45 2001] [warn] (2)No such file or directory: exec() may not be safe
[Thu Feb 08 14:48:45 2001] [warn] (2)No such file or directory: exec() may not be safe

yrc 21.08.2005 20:37

короче, у меня при запуске скрипта вырубает апач. что делать. все сделал, так как написано?

-MS- 21.08.2005 22:49

искать ruki.sys в инэте и настраивать все как надо


Часовой пояс GMT +4, время: 20:06.

Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.