За последние 24 часа нас посетили 17855 программистов и 1637 роботов. Сейчас ищут 2045 программистов ...

Как с помощью php соединения TCP / IP

Тема в разделе "PHP для профи", создана пользователем Ilyamaksimov, 30 янв 2018.

  1. Ilyamaksimov

    Ilyamaksimov Новичок

    С нами с:
    6 сен 2017
    Сообщения:
    26
    Симпатии:
    3
    Есть удаленный сервер который использует необработанные соединения TCP / IP (не HTTP) для удаленного управления и статистики. Принимает и отдает JSON

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


    Код (Text):
    1. import java.io.InputStream;
    2. import java.io.OutputStream;
    3. import java.net.Socket;
    4.  
    5. public class Main {
    6.  
    7.     public static void main(String args[]) throws Exception {
    8.         int c;
    9.  
    10.         // Создать сокетное соединение
    11.  
    12.         Socket s = new Socket( 'IP', 'Port');
    13.  
    14.         // получить потоки ввода-вывода
    15.         InputStream in = s.getInputStream();
    16.         OutputStream out = s.getOutputStream();
    17.  
    18.         // сформировать строку запроса
    19.  
    20.         String str = (args.length == 0 ? "JSON";
    21.  
    22.         // преобразовать строку в байты
    23.  
    24.         byte buf[] = str.getBytes();
    25.  
    26.         // послать запрос
    27.  
    28.         out.write(buf);
    29.  
    30.         // прочитать ответ и вывести его на экран
    31.  
    32.         while((c = in.read()) != -1) {
    33.             System.out.print((char) c);
    34.         }
    35.  
    36.         s.close();
    37.     }
    38. }
    Как тоже самое можно сделать на Php?
    P.S. За дельные советы могу финансово отблагодарить!
     
  2. Алекс8

    Алекс8 Активный пользователь

    С нами с:
    18 май 2017
    Сообщения:
    1.730
    Симпатии:
    359
  3. Ilyamaksimov

    Ilyamaksimov Новичок

    С нами с:
    6 сен 2017
    Сообщения:
    26
    Симпатии:
    3
    Спасибо, пробовал
    Код (Text):
    1. $address = IP ;
    2. $port = Port;
    3.  
    4. if (($sock = socket_create(AF_INET, SOCK_STREAM, SOL_TCP)) === false) {
    5.     echo "socket_create() falló: razón: " . socket_strerror(socket_last_error()) . "\n";
    6. }
    7.  
    8. if (socket_bind($sock, $address, $port) === false) {
    9.     echo "socket_bind() falló: razón: " . socket_strerror(socket_last_error($sock)) . "\n";
    10. }
    выдает Warning: socket_bind(): unable to bind address [10049]
     
  4. Ilyamaksimov

    Ilyamaksimov Новичок

    С нами с:
    6 сен 2017
    Сообщения:
    26
    Симпатии:
    3
    получилось так

    Код (Text):
    1. $request = ''; // тут тело апроса
    2. $timeout = 5;
    3. $sock = fsockopen('IP', 'port', $error_number, $error_str, $timeout);
    4. fwrite($sock, $request);
    5. while(!feof($sock)) {
    6.     echo fgets($sock, 1024);
    7. }
    8. fclose($sock);
     
    topas, denis01 и Алекс8 нравится это.