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

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: Error: socket_connect() failed: No connection could be made because the target machine actively refused it. [2]

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


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

> Без описания
EuGen Администратор
Отправлено: 06 Июля, 2012 - 13:36:16
Post Id


Профессионал


Покинул форум
Сообщений всего: 9095
Дата рег-ции: Июнь 2007  
Откуда: Berlin


Помог: 707 раз(а)




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


-----
Есть в мире две бесконечные вещи - это Вселенная и человеческая глупость. Но насчет первой .. я не уверен.
 
 Top
Соц Сеть
Отправлено: 06 Июля, 2012 - 18:45:27
Post Id



Посетитель


Покинул форум
Сообщений всего: 307
Дата рег-ции: Авг. 2011  


Помог: 0 раз(а)




укажите мне путь что мне делать чтобы сколько раз открыл 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. ?>
 
 Top
OrmaJever Модератор
Отправлено: 06 Июля, 2012 - 20:11:58
Post Id



Активный участник


Покинул форум
Сообщений всего: 7540
Дата рег-ции: Янв. 2010  
Откуда: Чернигов


Помог: 299 раз(а)




Соц Сеть пишет:
может другому порту прикрепить, просто я не знаю сколько портов есть у денвера

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


-----
Если вы хотя бы 3-4 раза не решите всё выкинуть и начать заново - вы явно что-то делаете не так.
 
 Top
Соц Сеть
Отправлено: 06 Июля, 2012 - 20:34:26
Post Id



Посетитель


Покинул форум
Сообщений всего: 307
Дата рег-ции: Авг. 2011  


Помог: 0 раз(а)




OrmaJever пишет:
Соц Сеть пишет:
может другому порту прикрепить, просто я не знаю сколько портов есть у денвера

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

если не трудно скажите что за определенный порт ? мне все ровно с каким портом главное сокет работал нормально
 
 Top
Viper
Отправлено: 06 Июля, 2012 - 20:39:10
Post Id



Активный участник


Покинул форум
Сообщений всего: 4555
Дата рег-ции: Февр. 2007  
Откуда: Симферополь


Помог: 98 раз(а)




А денвер висит на 10001? Ибо обычно на 80.


-----
Список фильмов с описанием, блекджеком и... для Joomla? -> https://киноархив[dot]com
Демо нового движка для сайта php.su -> php[dot]su, проект на гитхабе
 
 Top
Соц Сеть
Отправлено: 06 Июля, 2012 - 20:49:33
Post Id



Посетитель


Покинул форум
Сообщений всего: 307
Дата рег-ции: Авг. 2011  


Помог: 0 раз(а)




Viper пишет:
А денвер висит на 10001? Ибо обычно на 80.

на 80 проте вообще файл не открывает , и вообще 80 порт уже занят с денвером )
 
 Top
OrmaJever Модератор
Отправлено: 06 Июля, 2012 - 21:15:57
Post Id



Активный участник


Покинул форум
Сообщений всего: 7540
Дата рег-ции: Янв. 2010  
Откуда: Чернигов


Помог: 299 раз(а)




Соц Сеть пишет:
если не трудно скажите что за определенный порт ? мне все ровно с каким портом главное сокет работал нормально

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


-----
Если вы хотя бы 3-4 раза не решите всё выкинуть и начать заново - вы явно что-то делаете не так.
 
 Top
Соц Сеть
Отправлено: 06 Июля, 2012 - 21:21:31
Post Id



Посетитель


Покинул форум
Сообщений всего: 307
Дата рег-ции: Авг. 2011  


Помог: 0 раз(а)




OrmaJever пишет:
Соц Сеть пишет:
если не трудно скажите что за определенный порт ? мне все ровно с каким портом главное сокет работал нормально

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


если не трудно расскажите подробнее что мне делать, например на порте 10001 весит httpd.exe, мы узнали какая программа висит на этом порте что делать дальше ?
 
 Top
OrmaJever Модератор
Отправлено: 06 Июля, 2012 - 21:55:39
Post Id



Активный участник


Покинул форум
Сообщений всего: 7540
Дата рег-ции: Янв. 2010  
Откуда: Чернигов


Помог: 299 раз(а)




ну смотря что вы хотите от этой программы. Вначале нужно к ней подключится, затем отправить запрос в том виде в котором его поймёт эта программа, ну и получить ответ и т.д.


-----
Если вы хотя бы 3-4 раза не решите всё выкинуть и начать заново - вы явно что-то делаете не так.
 
 Top
Viper
Отправлено: 06 Июля, 2012 - 23:25:15
Post Id



Активный участник


Покинул форум
Сообщений всего: 4555
Дата рег-ции: Февр. 2007  
Откуда: Симферополь


Помог: 98 раз(а)




Соц Сеть пишет:
на 80 проте вообще файл не открывает , и вообще 80 порт уже занят с денвером )
как-то не согласуется с
Соц Сеть пишет:
например на порте 10001 весит httpd.exe, мы узнали какая программа висит на этом порте что делать дальше ?


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


-----
Список фильмов с описанием, блекджеком и... для Joomla? -> https://киноархив[dot]com
Демо нового движка для сайта php.su -> php[dot]su, проект на гитхабе
 
 Top
Соц Сеть
Отправлено: 07 Июля, 2012 - 00:23:38
Post Id



Посетитель


Покинул форум
Сообщений всего: 307
Дата рег-ции: Авг. 2011  


Помог: 0 раз(а)




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. ?>
 
 Top
OrmaJever Модератор
Отправлено: 07 Июля, 2012 - 00:47:50
Post Id



Активный участник


Покинул форум
Сообщений всего: 7540
Дата рег-ции: Янв. 2010  
Откуда: Чернигов


Помог: 299 раз(а)




ааа, я не увидел, у вас 2 скрипта, клиент и сервер. Ну для начала нужно запустить скрипт сервер, как я глянул у вас там будут выводится сообщения об успешных действиях, а затем уже пытатся подключатся к нему клиентом.


-----
Если вы хотя бы 3-4 раза не решите всё выкинуть и начать заново - вы явно что-то делаете не так.
 
 Top
Соц Сеть
Отправлено: 07 Июля, 2012 - 10:43:03
Post Id



Посетитель


Покинул форум
Сообщений всего: 307
Дата рег-ции: Авг. 2011  


Помог: 0 раз(а)




когда запускаем сервер все работает кроме одного
запуск сервера выглядит так
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

(Отредактировано автором: 07 Июля, 2012 - 10:50:16)

 
 Top
Соц Сеть
Отправлено: 07 Июля, 2012 - 16:48:45
Post Id



Посетитель


Покинул форум
Сообщений всего: 307
Дата рег-ции: Авг. 2011  


Помог: 0 раз(а)




Значит для этого скрипта сначала надо активировать сервер потом клиент чтобы работал ?

(Отредактировано автором: 07 Июля, 2012 - 19:36:52)

 
 Top
Страниц (2): « 1 [2]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Программирование на PHP »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB