Извините, ничего не найдено.

Не расстраивайся! Лучше выпей чайку!
Регистрация
Справка
Календарь

Вернуться   forum.boolean.name > Веб-программирование > PHP / MySQL

PHP / MySQL Создание динамических Веб-ресурсов

Ответ
 
Опции темы
Старый 04.02.2011, 22:42   #1
is.SarCasm
Бывалый
 
Аватар для is.SarCasm
 
Регистрация: 17.05.2009
Адрес: Днепропетровск
Сообщений: 672
Написано 180 полезных сообщений
(для 428 пользователей)
Сокеты б*я

Пол дня с ними долбаюсь

Короче говоря есть сервер и клиент

код сервера:
<?
header('Content-Type: text/plain;');
error_reporting(E_ALL ^ E_WARNING);
set_time_limit(0);
ob_implicit_flush();

echo "-= Server =-\n\n";

$address = 'localhost';
$port = 123;

try {

echo 'Create socket ... ';
if (($sock = socket_create(AF_INET, SOCK_STREAM, SOL_TCP)) < 0) {
throw new Exception('socket_create() failed: '.socket_strerror(socket_last_error())."\n");
} else {
echo "OK\n";
}

echo 'Bind socket ... ';
if (($ret = socket_bind($sock, $address, $port)) < 0) {
throw new Exception('socket_bind() failed: '.socket_strerror(socket_last_error())."\n");
} else {
echo "OK\n";
}

echo 'Listen socket ... ';
if (($ret = socket_listen($sock, 5)) < 0) {
throw new Exception('socket_listen() failed: '.socket_strerror(socket_last_error())."\n");
} else {
echo "OK\n";
}

do {
echo 'Accept socket ... ';
if (($msgsock = socket_accept($sock)) < 0) {
throw new Exception('socket_accept() failed: '.socket_strerror(socket_last_error())."\n");
} else {
echo "OK\n";
}

$msg = "Hello, Client!";
echo "Say to client ($msg) ... ";
socket_write($msgsock, $msg, strlen($msg));
echo "OK\n";



do {

echo 'Client said: ';
if (false === ($buf = socket_read($msgsock, 1024))) {
throw new Exception('socket_read() failed: '.socket_strerror(socket_last_error())."\n");
} else {
echo $buf."\n";
}


echo "Say to client ($buf) ... ";
socket_write($msgsock, $buf, strlen($buf));
echo "OK\n";

} while (true);

} while (true);

} catch (Exception $e) {
echo "\nError: ".$e->getMessage();
}

if (isset($sock)) {

echo 'Close socket ... ';
socket_close($sock);
echo "OK\n";

}
?>

код клиента:
<?
header('Content-Type: text/plain;');
error_reporting(E_ALL ^ E_WARNING);
set_time_limit(0);
ob_implicit_flush();

echo "-= Client =-\n\n";

$address = 'localhost';
$port = 123;

try {

echo 'Create socket ... ';
$socket = socket_create(AF_INET, SOCK_STREAM, SOL_TCP);
if ($socket < 0) {
throw new Exception('socket_create() failed: '.socket_strerror(socket_last_error())."\n");
} else {
echo "OK\n";
}

echo 'Connect socket ... ';
$result = socket_connect($socket, $address,$port);
if ($result === false) {
throw new Exception('socket_connect() failed: '.socket_strerror(socket_last_error())."\n");
} else {
echo "OK\n";
}

echo 'Server said: ';
$out = socket_read($socket, 1024);
echo $out."\n";

$msg = "Hello, Server!";
echo "Say to server ($msg) ...";
socket_write($socket, $msg, strlen($msg));
echo "OK\n";

echo 'Server said: ';
$out = socket_read($socket, 1024);
echo $out."\n";

$msg = 'shutdown';
echo "Say to server ($msg) ... ";
socket_write($socket, $msg, strlen($msg));
echo "OK\n";

} catch (Exception $e) {
echo "\nError: ".$e->getMessage();
}

if (isset($socket)) {

echo 'Close socket ... ';
socket_close($socket);
echo "OK\n";

}
?>


Случай 1: $address="localhost", $port = 123
-= Client =-

Create socket ... OK
Connect socket ... OK
Server said: Hello, Client!
Say to server (Hello, Server!) ...OK
Server said: Hello, Server!
Say to server (shutdown) ... OK
Close socket ... OK



-= Server =-

Create socket ... OK
Bind socket ... OK
Listen socket ... OK
Accept socket ... OK
Say to client (Hello, Client!) ... OK
Client said: Hello, Server!
Say to client (Hello, Server!) ... OK
Client said: shutdown
Say to client (shutdown) ... OK
Client said:
Error: socket_read() failed: Удаленный хост принудительно разорвал существующее подключение.

Close socket ... OK


Случай 2: $address="ХХХ", $port = 123 (оба файла залил на сервер ХХХ)
-= Server =-
страница не открывается (т.к. страница постояяно пополняется строками "Client said:" и "Say to client "

-= Client =-

Create socket ... OK
Connect socket ...
Error: socket_connect() failed: Connection refused
Close socket ... OK


Помогите устранить глупую проблему
(Offline)
 
Ответить с цитированием
Старый 06.02.2011, 17:30   #2
Жека
Дэвелопер
 
Регистрация: 04.09.2005
Адрес: Красноярск
Сообщений: 1,376
Написано 491 полезных сообщений
(для 886 пользователей)
Ответ: Сокеты б*я

Мне на ум пришёл заголовочный параметр Connection: Keep-Alive.
Но хз.
(Offline)
 
Ответить с цитированием
Старый 07.02.2011, 00:40   #3
is.SarCasm
Бывалый
 
Аватар для is.SarCasm
 
Регистрация: 17.05.2009
Адрес: Днепропетровск
Сообщений: 672
Написано 180 полезных сообщений
(для 428 пользователей)
Ответ: Сокеты б*я

Просто бесплатные хостинге не поддерживают сокеты + обмен информации на данном протоколе невазможен. (+ нужен выделенный сервер)
(Offline)
 
Ответить с цитированием
Ответ


Опции темы

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


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


vBulletin® Version 3.6.5.
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Перевод: zCarot
Style crйe par Allan - vBulletin-Ressources.com