Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770
Форумы портала PHP.SU :: Версия для печати :: Error: socket_connect() failed: No connection could be made because the target machine actively refused it. [2]
Форумы портала PHP.SU » PHP » Программирование на PHP » Error: socket_connect() failed: No connection could be made because the target machine actively refused it.

Страниц (2): « 1 [2]
 

16. EuGen - 06 Июля, 2012 - 13:36:16 - перейти к сообщению
Соц Сеть
Разумеется не можем. Ведь только одна программа может слушать на одном порту. Поэтому да, нужно проверять, не занят ли порт - перед тем, как пытаться привязать к нему слушателя. Собственно, в самом Вашем скрипте такая проверка уже сделана, только Вы вызываете исключение в случае, если привязка не удалась. Если логикой требуется что-то другое - так и укажите, что именно нужно (вывести сообщение, что не удалось и т.п.)
17. Соц Сеть - 06 Июля, 2012 - 18:45:27 - перейти к сообщению
укажите мне путь что мне делать чтобы сколько раз открыл cliend.php столько раз показал все нормально а не выдал ошибку типа сокет не подключен, может другому порту прикрепить, просто я не знаю сколько портов есть у денвера, вот скрипты скажите пожалуйста что менять чтобы нормально работал ?

server.php

PHP:
скопировать код в буфер обмена
  1. <?
  2.     header('Content-Type: text/plain;');
  3.     error_reporting(E_ALL ^ E_WARNING);
  4.     set_time_limit(0);
  5.    
  6.     echo "-= Server =-\n\n";
  7.  
  8.     $address = '127.0.0.1';
  9.     $port    = 10001;
  10.  
  11.     try {
  12.    
  13.         echo 'Create socket ... ';
  14.         if (($sock = socket_create(AF_INET, SOCK_STREAM, SOL_TCP)) < 0) {
  15.             throw new Exception('socket_create() failed: '.socket_strerror(socket_last_error())."\n");
  16.         } else {
  17.             echo "OK\n";
  18.         }
  19.  
  20.         echo 'Bind socket ... ';
  21.         if (($ret = socket_bind($sock, $address, $port)) < 0) {
  22.             throw new Exception('socket_bind() failed: '.socket_strerror(socket_last_error())."\n");
  23.         } else {
  24.             echo "OK\n";
  25.         }
  26.  
  27.         echo 'Listen socket ... ';
  28.         if (($ret = socket_listen($sock, 5)) < 0) {
  29.             throw new Exception('socket_listen() failed: '.socket_strerror(socket_last_error())."\n");
  30.         } else {
  31.             echo "OK\n";
  32.         }
  33.  
  34.         do {
  35.             echo 'Accept socket ... ';
  36.             if (($msgsock = socket_accept($sock)) < 0) {
  37.                 throw new Exception('socket_accept() failed: '.socket_strerror(socket_last_error())."\n");
  38.             } else {
  39.                 echo "OK\n";
  40.             }
  41.            
  42.             $msg = "Hello, Client!";
  43.             echo "Say to client ($msg) ... ";
  44.             socket_write($msgsock, $msg, strlen($msg));
  45.             echo "OK\n";
  46.             do {
  47.            
  48.                 echo 'Client said: ';
  49.                 if (false === ($buf = socket_read($msgsock, 1024))) {
  50.                     throw new Exception('socket_read() failed: '.socket_strerror(socket_last_error())."\n");
  51.                 } else {
  52.                     echo $buf."\n";
  53.                 }
  54.                
  55.                 if (!$buf = trim($buf)) {
  56.                     continue;
  57.                 }
  58.                
  59.                 if ($buf == 'shutdown') {
  60.                     socket_close($msgsock);
  61.                     break 2;
  62.                 }
  63.                
  64.                 echo "Say to client ($buf) ... ";
  65.                 socket_write($msgsock, $buf, strlen($buf));
  66.                 echo "OK\n";
  67.                
  68.             } while (true);
  69.            
  70.         } while (true);
  71.  
  72.     } catch (Exception $e) {
  73.         echo "\nError: ".$e->getMessage();
  74.     }
  75.    
  76.     if (isset($sock)) {
  77.    
  78.         echo 'Close socket ... ';
  79.         socket_close($sock);
  80.         echo "OK\n";
  81.    
  82.     }
  83. ?>


client.php

PHP:
скопировать код в буфер обмена
  1. <?
  2.     header('Content-Type: text/plain;');
  3.     error_reporting(E_ALL ^ E_WARNING);
  4.     set_time_limit(0);
  5.    
  6.     echo "-= Client =-\n\n";
  7.  
  8.     $address = '127.0.0.1';
  9.     $port    = 10001;
  10.  
  11.     try {
  12.    
  13.         echo 'Create socket ... ';
  14.         $socket = socket_create(AF_INET, SOCK_STREAM, SOL_TCP);
  15.         if ($socket < 0) {
  16.             throw new Exception('socket_create() failed: '.socket_strerror(socket_last_error())."\n");
  17.         } else {
  18.             echo "OK\n";
  19.         }
  20.  
  21.         echo 'Connect socket ... ';
  22.         $result = socket_connect($socket, $address,$port);
  23.         if ($result === false) {
  24.             throw new Exception('socket_connect() failed: '.socket_strerror(socket_last_error())."\n");
  25.         } else {
  26.             echo "OK\n";
  27.         }
  28.  
  29.         echo 'Server said: ';
  30.         $out = socket_read($socket, 1024);
  31.         echo $out."\n";
  32.        
  33.         $msg = "Hello, Server!";
  34.         echo "Say to server ($msg) ...";
  35.         socket_write($socket, $msg, strlen($msg));
  36.         echo "OK\n";
  37.        
  38.         echo 'Server said: ';
  39.         $out = socket_read($socket, 1024);
  40.         echo $out."\n";
  41.        
  42.         $msg = 'shutdown';
  43.         echo "Say to server ($msg) ... ";
  44.         socket_write($socket, $msg, strlen($msg));
  45.         echo "OK\n";
  46.        
  47.     } catch (Exception $e) {
  48.         echo "\nError: ".$e->getMessage();
  49.     }
  50.    
  51.     if (isset($socket)) {
  52.    
  53.         echo 'Close socket ... ';
  54.         socket_close($socket);
  55.         echo "OK\n";
  56.        
  57.     }
  58. ?>
18. OrmaJever - 06 Июля, 2012 - 20:11:58 - перейти к сообщению
Соц Сеть пишет:
может другому порту прикрепить, просто я не знаю сколько портов есть у денвера

а зачем оно вам надо если вам всёровно с каким портом соединятся? обычно сокеты используют для для передачи информации определёному порту.
19. Соц Сеть - 06 Июля, 2012 - 20:34:26 - перейти к сообщению
OrmaJever пишет:
Соц Сеть пишет:
может другому порту прикрепить, просто я не знаю сколько портов есть у денвера

а зачем оно вам надо если вам всёровно с каким портом соединятся? обычно сокеты используют для для передачи информации определёному порту.

если не трудно скажите что за определенный порт ? мне все ровно с каким портом главное сокет работал нормально
20. Viper - 06 Июля, 2012 - 20:39:10 - перейти к сообщению
А денвер висит на 10001? Ибо обычно на 80.
21. Соц Сеть - 06 Июля, 2012 - 20:49:33 - перейти к сообщению
Viper пишет:
А денвер висит на 10001? Ибо обычно на 80.

на 80 проте вообще файл не открывает , и вообще 80 порт уже занят с денвером )
22. OrmaJever - 06 Июля, 2012 - 21:15:57 - перейти к сообщению
Соц Сеть пишет:
если не трудно скажите что за определенный порт ? мне все ровно с каким портом главное сокет работал нормально

Определёный порт это порт который вы заранее знаете, и знаете что на нём висит (какая программа) и как с ней работать, я сомневаюсь что вам нужны сокеты если вы впринципе этого не понимаете. Сокет не будет работать коректно пока вы не выясните с какой программой он должен работать, а это я написал выше.
23. Соц Сеть - 06 Июля, 2012 - 21:21:31 - перейти к сообщению
OrmaJever пишет:
Соц Сеть пишет:
если не трудно скажите что за определенный порт ? мне все ровно с каким портом главное сокет работал нормально

Определёный порт это порт который вы заранее знаете, и знаете что на нём висит (какая программа) и как с ней работать, я сомневаюсь что вам нужны сокеты если вы впринципе этого не понимаете. Сокет не будет работать коректно пока вы не выясните с какой программой он должен работать, а это я написал выше.


если не трудно расскажите подробнее что мне делать, например на порте 10001 весит httpd.exe, мы узнали какая программа висит на этом порте что делать дальше ?
24. OrmaJever - 06 Июля, 2012 - 21:55:39 - перейти к сообщению
ну смотря что вы хотите от этой программы. Вначале нужно к ней подключится, затем отправить запрос в том виде в котором его поймёт эта программа, ну и получить ответ и т.д.
25. Viper - 06 Июля, 2012 - 23:25:15 - перейти к сообщению
Соц Сеть пишет:
на 80 проте вообще файл не открывает , и вообще 80 порт уже занят с денвером )
как-то не согласуется с
Соц Сеть пишет:
например на порте 10001 весит httpd.exe, мы узнали какая программа висит на этом порте что делать дальше ?


Ключевая проблема в вашем вопросе это, то что вы говорите про денвер, пытаясь подключится к порту, фигурирующему в работе другого приложения. Опишите полную схему того, что вам нужно(не код) ибо сейчас уже гадание начинается.
26. Соц Сеть - 07 Июля, 2012 - 00:23:38 - перейти к сообщению
Viper пишет:
Соц Сеть пишет:
на 80 проте вообще файл не открывает , и вообще 80 порт уже занят с денвером )
как-то не согласуется с
Соц Сеть пишет:
например на порте 10001 весит httpd.exe, мы узнали какая программа висит на этом порте что делать дальше ?


Ключевая проблема в вашем вопросе это, то что вы говорите про денвер, пытаясь подключится к порту, фигурирующему в работе другого приложения. Опишите полную схему того, что вам нужно(не код) ибо сейчас уже гадание начинается.


мне нужно чтобы код который поставил ниже работал нормально, что мне делать чтобы в денвере код который вставил ниже работал нормально и не выдал ошибку ?


PHP:
скопировать код в буфер обмена
  1. server.php
  2.  
  3.  
  4. <?
  5.     header('Content-Type: text/plain;');
  6.     error_reporting(E_ALL ^ E_WARNING);
  7.     set_time_limit(0);
  8.    
  9.     echo "-= Server =-\n\n";
  10.  
  11.     $address = '127.0.0.1';
  12.     $port    = 10001;
  13.  
  14.     try {
  15.    
  16.         echo 'Create socket ... ';
  17.         if (($sock = socket_create(AF_INET, SOCK_STREAM, SOL_TCP)) < 0) {
  18.             throw new Exception('socket_create() failed: '.socket_strerror(socket_last_error())."\n");
  19.         } else {
  20.             echo "OK\n";
  21.         }
  22.  
  23.         echo 'Bind socket ... ';
  24.         if (($ret = socket_bind($sock, $address, $port)) < 0) {
  25.             throw new Exception('socket_bind() failed: '.socket_strerror(socket_last_error())."\n");
  26.         } else {
  27.             echo "OK\n";
  28.         }
  29.  
  30.         echo 'Listen socket ... ';
  31.         if (($ret = socket_listen($sock, 5)) < 0) {
  32.             throw new Exception('socket_listen() failed: '.socket_strerror(socket_last_error())."\n");
  33.         } else {
  34.             echo "OK\n";
  35.         }
  36.  
  37.         do {
  38.             echo 'Accept socket ... ';
  39.             if (($msgsock = socket_accept($sock)) < 0) {
  40.                 throw new Exception('socket_accept() failed: '.socket_strerror(socket_last_error())."\n");
  41.             } else {
  42.                 echo "OK\n";
  43.             }
  44.            
  45.             $msg = "Hello, Client!";
  46.             echo "Say to client ($msg) ... ";
  47.             socket_write($msgsock, $msg, strlen($msg));
  48.             echo "OK\n";
  49.             do {
  50.            
  51.                 echo 'Client said: ';
  52.                 if (false === ($buf = socket_read($msgsock, 1024))) {
  53.                     throw new Exception('socket_read() failed: '.socket_strerror(socket_last_error())."\n");
  54.                 } else {
  55.                     echo $buf."\n";
  56.                 }
  57.                
  58.                 if (!$buf = trim($buf)) {
  59.                     continue;
  60.                 }
  61.                
  62.                 if ($buf == 'shutdown') {
  63.                     socket_close($msgsock);
  64.                     break 2;
  65.                 }
  66.                
  67.                 echo "Say to client ($buf) ... ";
  68.                 socket_write($msgsock, $buf, strlen($buf));
  69.                 echo "OK\n";
  70.                
  71.             } while (true);
  72.            
  73.         } while (true);
  74.  
  75.     } catch (Exception $e) {
  76.         echo "\nError: ".$e->getMessage();
  77.     }
  78.    
  79.     if (isset($sock)) {
  80.    
  81.         echo 'Close socket ... ';
  82.         socket_close($sock);
  83.         echo "OK\n";
  84.    
  85.     }
  86. ?>
  87.  
  88.  
  89. client.php
  90.  
  91. PHP:
  92. скопировать код в буфер обмена
  93. <?
  94.     header('Content-Type: text/plain;');
  95.     error_reporting(E_ALL ^ E_WARNING);
  96.     set_time_limit(0);
  97.    
  98.     echo "-= Client =-\n\n";
  99.  
  100.     $address = '127.0.0.1';
  101.     $port    = 10001;
  102.  
  103.     try {
  104.    
  105.         echo 'Create socket ... ';
  106.         $socket = socket_create(AF_INET, SOCK_STREAM, SOL_TCP);
  107.         if ($socket < 0) {
  108.             throw new Exception('socket_create() failed: '.socket_strerror(socket_last_error())."\n");
  109.         } else {
  110.             echo "OK\n";
  111.         }
  112.  
  113.         echo 'Connect socket ... ';
  114.         $result = socket_connect($socket, $address,$port);
  115.         if ($result === false) {
  116.             throw new Exception('socket_connect() failed: '.socket_strerror(socket_last_error())."\n");
  117.         } else {
  118.             echo "OK\n";
  119.         }
  120.  
  121.         echo 'Server said: ';
  122.         $out = socket_read($socket, 1024);
  123.         echo $out."\n";
  124.        
  125.         $msg = "Hello, Server!";
  126.         echo "Say to server ($msg) ...";
  127.         socket_write($socket, $msg, strlen($msg));
  128.         echo "OK\n";
  129.        
  130.         echo 'Server said: ';
  131.         $out = socket_read($socket, 1024);
  132.         echo $out."\n";
  133.        
  134.         $msg = 'shutdown';
  135.         echo "Say to server ($msg) ... ";
  136.         socket_write($socket, $msg, strlen($msg));
  137.         echo "OK\n";
  138.        
  139.     } catch (Exception $e) {
  140.         echo "\nError: ".$e->getMessage();
  141.     }
  142.    
  143.     if (isset($socket)) {
  144.    
  145.         echo 'Close socket ... ';
  146.         socket_close($socket);
  147.         echo "OK\n";
  148.        
  149.     }
  150. ?>
27. OrmaJever - 07 Июля, 2012 - 00:47:50 - перейти к сообщению
ааа, я не увидел, у вас 2 скрипта, клиент и сервер. Ну для начала нужно запустить скрипт сервер, как я глянул у вас там будут выводится сообщения об успешных действиях, а затем уже пытатся подключатся к нему клиентом.
28. Соц Сеть - 07 Июля, 2012 - 10:43:03 - перейти к сообщению
когда запускаем сервер все работает кроме одного
запуск сервера выглядит так
Create socket ... ok
Bind socket ... ok
Listen socket ... ok
Accept socket ... ok
потом отправляет сообщение клиенту
PHP:
скопировать код в буфер обмена
  1. $msg = "Hello, Client!";
  2.             echo "Say to client ($msg) ... ";
  3.             socket_write($msgsock, $msg, strlen($msg));
  4.             echo "OK\n";

это тоже выводит OK
а вот данные от клиента не получается

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

Create socket ... OK
Connect socket ...
Error: socket_connect() failed: No connection could be made because the target machine actively refused it.

Close socket ... OK

одно замечание,когда сначала открывая сервер.php потом клиент.php, в клиент php сокте работает а,а когда обновляю клиент.php выводит ошибка
Create socket ... OK
Connect socket ...
Error: socket_connect() failed: No connection could be made because the target machine actively refused it.

Close socket ... OK
29. Соц Сеть - 07 Июля, 2012 - 16:48:45 - перейти к сообщению
Значит для этого скрипта сначала надо активировать сервер потом клиент чтобы работал ?

 

Powered by ExBB FM 1.0 RC1