отправка сообщения через socket

[Удален]
1798

Добрый день.

подскажите, пожалуйста, как в php отправить сообщение через socket?

имея ip, номер порта и команда, которую должен принять агент

[umka]
На сайте с 25.05.2008
Offline
456
#1
MrBernz:
Добрый день.

подскажите, пожалуйста, как в php отправить сообщение через socket?
имея ip, номер порта и команда, которую должен принять агент

http://php.net/manual/en/function.fsockopen.php

Раздел "Examples".

Лог в помощь!
[Удален]
#2

Спасибо, поковыряю примерчики..

[Удален]
#3

Подскажите пожалуйста, чего я не так делаю?

Нужно сообщение агенту отослать через socket, чтобы он запустил определённый скрипт.

делаю так:

<?

# Настройки
$address = '192.168.3.3';
$port = 10100;
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<br /><br />";
}

$message = 'crat_synch_web';
echo "Say to server ($message)<br /><br />";
socket_write($socket, $message, strlen($msg));
echo "OK<br /><br />";
}

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

if (isset($socket)) {

echo 'Close socket ... ';
socket_close($socket);
echo "OK<br /><br />";

}
?>

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

T.R.O.N
На сайте с 18.05.2004
Offline
314
#4
MrBernz:
но агент не запускается.

где создание сокета для 192.168.3.3:10100?

а где сам агент, получающий сообщение?

и что есть strlen($msg) ?

От воздержания пока никто не умер. Хотя никто и не родился! Prototype.js был написан теми, кто не знает JavaScript, для тех, кто не знает JavaScript (Richard Cornford)
[Удален]
#5

Всё, сделал уже) вступил просто чего-то..

агент висит здесь 192.168.3.3:10100

strlen($msg) = strlen($message) - ошибся тоже

вот код окончательный:

<?

header('Content-Type: text/plain;');
error_reporting(E_ALL ^ E_WARNING);
set_time_limit(0);
ob_implicit_flush();

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

# Настройки
$address = '192.168.3.3';
$port = 10100;

try {
echo 'Create socket ... ';
if (($socket = 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 '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";
}

$message = 'crat_synch_web';
echo "Say to server ($message) ... ";
socket_write($socket, $message, strlen($message));
echo "OK\n";
}

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

if (isset($socket)) {

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

}
?>

не в рекламу, но блог человека помог

MrBernz добавил 05.05.2010 в 14:06

UPD: Необязательный параметр length может специфицировать альтернативную длину байтов, записываемых в сокет. Если параметр length больше длины буфера, он скрыто усекается до длины буфера.

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий