[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: соединение TCP / IP на php?
ilya1234567
Есть удаленный сервер который использует необработанные соединения TCP / IP (не HTTP) для удаленного управления и статистики. Принимает и отдает JSON

У меня получилось подключиться к нему через Java, получаю необходимый Json ответ


import java.io.InputStream;
import java.io.OutputStream;
import java.net.Socket;

public class Main {

public static void main(String args[]) throws Exception {
int c;

// Создать сокетное соединение

Socket s = new Socket( 'IP', 'Port');

// получить потоки ввода-вывода
InputStream in = s.getInputStream();
OutputStream out = s.getOutputStream();

// сформировать строку запроса

String str = (args.length == 0 ? "JSON";

// преобразовать строку в байты

byte buf[] = str.getBytes();

// послать запрос

out.write(buf);

// прочитать ответ и вывести его на экран

while((c = in.read()) != -1) {
System.out.print((char) c);
}

s.close();
}
}


Как тоже самое можно сделать на Php?
(или на JS)
P.S. За дельные советы могу финансово отблагодарить!
killer8080
типа такого

$request = ''; // тут тело апроса
$timeout = 5;
$sock = fsockopen('IP', 'port', $error_number, $error_str, $timeout);
fwrite($sock, $request);
while(!feof($sock)) {
echo fgets($sock, 1024);
}
fclose($sock);
ilya1234567
Цитата (killer8080 @ 30.01.2018 - 17:19)
типа такого

$request = ''; // тут тело апроса
$timeout = 5;
$sock = fsockopen('IP', 'port', $error_number, $error_str, $timeout);
fwrite($sock, $request);
while(!feof($sock)) {
echo fgets($sock, 1024);
}
fclose($sock);

Дружище спасибо! помог! За свои слова я отвечаю, скинь мне номер тлф/адрес карты/ могу даже в криптовалюте тебе перечислить если хочешь)
killer8080
ilya1234567
забей smile.gif
я за 5 строчек тривиального кода на форуме деньги не беру rolleyes.gif
ilya1234567
Цитата (ilya1234567 @ 30.01.2018 - 17:26)
Цитата (killer8080 @ 30.01.2018 - 17:19)
типа такого

$request = ''; // тут тело апроса
$timeout = 5;
$sock = fsockopen('IP', 'port', $error_number, $error_str, $timeout);
fwrite($sock, $request);
while(!feof($sock)) {
    echo fgets($sock, 1024);
}
fclose($sock);

Дружище спасибо! помог! За свои слова я отвечаю, скинь мне номер тлф/адрес карты/ могу даже в криптовалюте тебе перечислить если хочешь)

как можно отловить ошибку если не получается подключиться по указанному IP и Port?
$sock = fsockopen('IP', 'port', $error_number, $error_str, $timeout);

try-catch не отлавливает
AllesKlar
http://php.net/fsockopen
Возвращаемые значения

_____________
[продано копирайтерам]
ilya1234567
[QUOTE=AllesKlar,1.02.2018 - 16:26]http://php.net/fsockopen


проблема в том, что если socet не может подключиться к указанному порту, то страница зависает и всплывает

Warning: fsockopen(): unable to connect to host/ip

Warning: fwrite() expects parameter 1 to be resource, boolean given in ... on line ...

Warning: feof() expects parameter 1 to be resource, boolean given in ... on line ...

Warning: fgets() expects parameter 1 to be resource, boolean given in ... on line ...
ilya1234567
Цитата (ilya1234567 @ 1.02.2018 - 17:58)
[QUOTE=AllesKlar,1.02.2018 - 16:26]http://php.net/fsockopen


проблема в том, что если socet не может подключиться к указанному порту, то страница зависает и всплывает

Warning: fsockopen(): unable to connect to host/ip

Warning: fwrite() expects parameter 1 to be resource, boolean given in ... on line ...

Warning: feof() expects parameter 1 to be resource, boolean given in ... on line ...

Warning: fgets() expects parameter 1 to be resource, boolean given in ... on line ...


$json='тут мой json';

$fp = fopen('data.txt', 'a+');

$sock = fsockopen($host, $port, $error_number, $error_str);

fwrite($sock, $json);

while (!feof($sock)) {
$socet_return_json = fgets($sock, 1024);

}

fclose($sock);



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

через try -catch не получается
AllesKlar
Цитата (ilya1234567 @ 1.02.2018 - 15:58)
проблема в том, что если socet не может подключиться к указанному порту, то страница зависает и всплывает

Еще раз
http://php.net/fsockopen
Возвращаемые значения

а заодно
http://php.net/fsockopen
Список параметров
чтобы не зависала.

_____________
[продано копирайтерам]
killer8080
$request = ''; // тут тело апроса
$timeout = 5;
$sock = @fsockopen('IP', 'port', $error_number, $error_str, $timeout);

if ($sock) {
fwrite($sock, $request);
while(!feof($sock)) {
echo fgets($sock, 1024);
}
fclose($sock);
} else {
echo "Error: $error_str";
}

символ @ подавляет стандартный warning
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.