PDA

Просмотр полной версии : PHP и Flash через сокеты


DizMaster
12.07.2005, 22:08
У меня проблема - надо заставить работать связку PHP - Flash через сокеты.

Flash должна устанавливать соединение с PHP, который соединён с БД. История стандартна, но обычный http тут не совсем подходит: надо часто слать информацию.


Flash часть:
--Button (btn)
--Text Field (out_tf)
////////////////////////////////////
soc = new XMLSocket();
soc.onConnect = function(success) {
if (success) {
_root.out_tf.text += "connected \n";
} else {
_root.out_tf.text += "failed \n";
}
};
btn.onRelease = function() {
soc.connect("127.0.0.1", 10002);
};
////////////////////////////////////



PHP часть:
////////////////////////////////////
<?php
$sock = socket_create(AF_INET, SOCK_STREAM, SOL_TCP);
socket_bind($sock, '127.0.0.1' ,10002);

socket_connect($sock, '127.0.0.1', 10002);
$request = 'Hello!';
socket_write($sock, $request);
//socket_read($sock,1024);

socket_close($sock);
?>
////////////////////////////////////
Если раскомментировать socket_read($sock,1024), то один раз скрипт выполняется, а потом выводит это:
1. Обычно разрешается одно использование адреса сокета (протокол/сетевой адрес/порт): это ему socket_bind не нравится?
2. unable to write to socket [0]: Запрос на отправку или получение данных (when sending on a datagram socket using a sendto call) no address was supplied
3. см. п. 2, только вместо write там read



И как инициировать создание сокета? Флешка должна опрашивать скрипт? Или вся идея нерабочая?

-MS-
12.07.2005, 23:06
пробова я как то через сокет с флешем работать, ни чего у мя не получилось... если получится - напиши тут

DizMaster
13.07.2005, 10:41
Я пробовал с одим парнем соединяться. Он написал свою часть на Delphi, всё работало как часы. Говорит, что просто вытащил стандартные компоненты.

nagash
13.07.2005, 19:12
для этого лутще использовать http://uk.php.net/manual/en/function.stream-socket-server.php
примеры почитайте в мануале потыркав по функциям...
там довольно внятные примеры...
тестируйте лутще всего телнетом...
конектитесь и пытаетесь работать...


принцип простой... к вам кто-то конектиться, ваш скрипт обрабатывает запрос и вместо выхода он опять должен начать прослушивать сокет...
у вас же за одну итерацию всё проходит, всё закрывается и скрипт заканчивает работу...

DizMaster
13.07.2005, 22:50
проблемка, stream_socket_server есь тока в 5пхп, хостеры в основном сидят на четвёрке :(

50%LameRa
14.07.2005, 20:43
проблемка, stream_socket_server есь тока в 5пхп, хостеры в основном сидят на четвёрке
Вот почему я забил на идею делать php-flash-chat через сокетты(хотя это и удобнее).
На четверке они должным образом не поддерживаются, точнее поддерживаются, но на той которая gd2 не поддерживает, а для меня это важнее.

nagash
14.07.2005, 20:59
что за бред про gd2? =)

50%LameRa
14.07.2005, 21:53
PHP >= 4.3 for the GD2
а для большинства соккет функций PHP 4 >= 4.1.0, PHP 5

nagash
14.07.2005, 22:05
50%LameRa
мдя...
я надеюсь ты сам понимаешь какой бред ты несёшь...

50%LameRa
14.07.2005, 22:20
я не понимаю что несу бред.
если это так прошу объяснить ошибочность моих слов.

nagash
14.07.2005, 22:43
во всём...
гд2 работает начиная с пхп 4.0.6 - где-то так... ито, его можно было и раньше подключать, просто враппера на некоторые функции не было...
сокет функции работают всегда...
в.4.3 появились дополнительные stream функции...
в пятёрке появилось ещё больше stream функций...
откуда этот вырванный кусок про 4.3 с гд2? это не понятно...
он в пятёрке чтоли не работает?
а сокет функции не работают в 4.3? бред...

50%LameRa
15.07.2005, 20:03
что ж если ты прав, а я нет то буду только рад т.к. у меня возникала серьезная дилемма между сокетами и графикой.
так что хотелось бы прояснить эту ситуацию, вернусь когда почитаю что нибудь по этой теме(пока сонова займусь тестированием, т.к. именно исходя из практики я сказал то, что сказал).

nagash
16.07.2005, 16:04
=)))))))))))))

50%LameRa
19.07.2005, 15:50
да, ты был прав(я считал, что модули от одних версии Php подходят другим, поэтому не правильно толковал выдаваемые ошибки)
но я рад, что нес бред, а то бы так и сидел в потемках.