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 :: Cокеты - не пойму в чём ошибка

 PHP.SU

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


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

> Описание: вот
nordghost
Отправлено: 02 Апреля, 2012 - 17:01:50
Post Id



Посетитель


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


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




Вот сам код
PHP:
скопировать код в буфер обмена
  1.  
  2. <?PHP
  3. $setings=parse_ini_file("settings/senddataconfig.ini");
  4. $port=10001;
  5. $addres='192.168.168.136';
  6.         $socket=socket_create(AF_INET, SOCK_STREAM, SOL_TCP);
  7.         socket_bind($socket, $addres, $port);
  8.                 while(true){
  9.                         socket_listen($socket, 5);
  10.                         $msgsock=socket_accept($socket);
  11.                         $rgBuf=socket_read($msgsock, 1024);
  12.                         $SBuf=explode(':::', $rgBuf);
  13.                         socket_recvfrom($socket, $buf, 12, 0, $from, $port);
  14.                                 if ($SBuf[0]=="command"){
  15.                                
  16.                                 system($SBuf[1]);
  17.                         }else{
  18.         if(is_dir("logfiles/".$SBuf[0])){
  19.                 $fi=fopen("logfiles/".$SBuf[0]."/server.log", "a");
  20.                 fwrite($fi, $SBuf[1]."\n");
  21.                 fclose($fi);
  22.                 $fi2=fopen("logfiles/".$SBuf[0]."/Serverinfo.log", "a");
  23.                 ftruncate($fi2, 0);
  24.                 fwrite($fi2, $SBuf[2]."\n");
  25.                 fclose($fi2);
  26.                 echo $SBuf[0];
  27.                 echo $from;
  28.         }else{
  29.                 mkdir("logfiles/".$SBuf[0], 0700);
  30.                 $fi=fopen("logfiles/".$SBuf[0]."/server.log", "a");
  31.                 fwrite($fi, $SBuf[1]."\n");
  32.                 fclose($fi);
  33.                 $fi2=fopen("logfiles/".$SBuf[0]."/Serverinfo.log", "a");
  34.                 ftruncate($fi2, 0);
  35.                 fwrite($fi2, $SBuf[2]."\n");
  36.                 fclose($fi2);
  37.                 echo $SBuf[0];
  38.                 echo $from;
  39.         }      
  40. }
  41.  
  42.  
  43. }
  44. ?>
  45.  


Вот сообщение об ошибке


PHP Warning: socket_recvfrom(): unable to recvfrom [107]: Transport endpoint is not connected in /var/www/server/start_server.php on line 13

этот скрипт принимает инфу и распределяет чё с ней делать а 2-й отсылает, инфа передается норм, но хочу видеть IP адрес машины с которой пришла инфа

(Отредактировано автором: 02 Апреля, 2012 - 17:03:06)



-----
<a href="http://netbeans[dot]org/">Моя любимая IDE</a> :3
 
My status
 Top
EuGen Администратор
Отправлено: 02 Апреля, 2012 - 17:14:13
Post Id


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


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


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




Нужно сначала принять соединение при помощи socket_accept - примерно так (в терминах Ваших переменных):
PHP:
скопировать код в буфер обмена
  1. socket_bind($socket, $addres, $port);
  2. while($msgsock=socket_accept($socket))
  3. {
  4.     socket_listen($socket, 5);
  5.    //...
  6. }


-----
Есть в мире две бесконечные вещи - это Вселенная и человеческая глупость. Но насчет первой .. я не уверен.
 
 Top
nordghost
Отправлено: 02 Апреля, 2012 - 17:19:40
Post Id



Посетитель


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


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




Извините я пока новичёк в php не могу понять уда мне его присобачить Не понял


-----
<a href="http://netbeans[dot]org/">Моя любимая IDE</a> :3
 
My status
 Top
EuGen Администратор
Отправлено: 02 Апреля, 2012 - 17:25:13
Post Id


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


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


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




nordghost
Вместо Вашего while(true){


-----
Есть в мире две бесконечные вещи - это Вселенная и человеческая глупость. Но насчет первой .. я не уверен.
 
 Top
nordghost
Отправлено: 02 Апреля, 2012 - 17:31:59
Post Id



Посетитель


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


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




PHP:
скопировать код в буфер обмена
  1.  
  2. <?PHP
  3. $setings=parse_ini_file("settings/senddataconfig.ini");
  4. $port=10001;
  5. $addres='192.168.168.136';
  6.         $socket=socket_create(AF_INET, SOCK_STREAM, SOL_TCP);
  7.  
  8.                 socket_bind($socket, $addres, $port);
  9.                 while($msgsock=socket_accept($socket)){
  10.                         socket_listen($socket, 5);
  11.                         $rgBuf=socket_read($msgsock, 1024);
  12.                         $SBuf=explode(':::', $rgBuf);
  13.                         socket_recvfrom($socket, $buf, 12, 0, $from, $port2);
  14.                                 if ($SBuf[0]=="command"){
  15.                                
  16.                                 system($SBuf[1]);
  17.                         }else{
  18.         if(is_dir("logfiles/".$SBuf[0])){
  19.                 $fi=fopen("logfiles/".$SBuf[0]."/server.log", "a");
  20.                 fwrite($fi, $SBuf[1]."\n");
  21.                 fclose($fi);
  22.                 $fi2=fopen("logfiles/".$SBuf[0]."/Serverinfo.log", "a");
  23.                 ftruncate($fi2, 0);
  24.                 fwrite($fi2, $SBuf[2]."\n");
  25.                 fclose($fi2);
  26.                 echo $SBuf[0];
  27.                 echo $from;
  28.         }else{
  29.                 mkdir("logfiles/".$SBuf[0], 0700);
  30.                 $fi=fopen("logfiles/".$SBuf[0]."/server.log", "a");
  31.                 fwrite($fi, $SBuf[1]."\n");
  32.                 fclose($fi);
  33.                 $fi2=fopen("logfiles/".$SBuf[0]."/Serverinfo.log", "a");
  34.                 ftruncate($fi2, 0);
  35.                 fwrite($fi2, $SBuf[2]."\n");
  36.                 fclose($fi2);
  37.                 echo $SBuf[0];
  38.                 echo $from;
  39.         }      
  40. }
  41.  
  42.  
  43. }
  44. ?>
  45.  


Cделал так теперь не хочет делать ацепт!


-----
<a href="http://netbeans[dot]org/">Моя любимая IDE</a> :3
 
My status
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Вопросы новичков »


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



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

 
Powered by ExBB FM 1.0 RC1. InvisionExBB