Перейти к содержимому


Фотография
- - - - -

Обычно разрешается одно использование адреса сокета


  • Пожалуйста, авторизуйтесь, чтобы ответить
6 ответов в этой теме

#1 *soulburner*

*soulburner*

    You have reached level cap

  • True Members
  • PipPipPipPipPip
  • 5619 сообщений
225
Очень хороший
  • Пол:Мужчина

Опубликовано 12 May 2007 - 04:36

Вобщем, решил написать демона для поиска в DC++ (см https://swnet.spb.ru/...showtopic=11137 )

Проблема вот в чем - создаю демона, который случает определеный порт (по UDP). Запускаю. Все ок.

Но потом, если я пытаюсь создать сокет из другого скрипта, чтобы послать что-то этому демону, то получают ошибку
"Обычно разрешается одно использование адреса сокета"

Я, конечно, понимаю, что в реальных ситауциях этого не будет, т.к. демон будет висеть на одной машине, а скрипт будет к нему коннектиться с другой. Но как мне побороть это у себя? Надо ведь как-то дебажить!?
  • 0

#2 GlebVt

GlebVt

    нервное чучело

  • True Members
  • PipPipPipPipPip
  • 6290 сообщений
69
Хороший
  • Пол:Мужчина

Опубликовано 12 May 2007 - 13:26

вирт. машина не катит?
или лень? )
  • 0

#3 deepweb

deepweb

    Дипыч

  • Admin
  • PipPipPipPipPip
  • 1639 сообщений
42
Обычный
  • Пол:Мужчина
  • Город:Санкт-Петербург

Опубликовано 12 May 2007 - 17:56

А проще придумать не мог? есть сервер на нём есть листинг файлов попробуй парсить иначе поиск на прямую без базы будет крайней медленным.
Собственно.
1. Получи листинг с сервера. с помощью настройки под линукс dc++
2. Путём обработки файла загони это всё в mysql в таблицу с четкими гранями тоесть с грамотной архитектурой.
3. Хитрый sql запрос позволит тебе быстро работать с парой другой миллионов записей.
4. Напиши морду.
5. Напиши крон-скрипт проверки статуса шар с записью в базу.

Да и схема с сокетами будет зависима от работы и качества сети что не очень адекватно в связи с перспективой роста сети.

Другие же варианты приведут к заметной потери производительности и полному отсутствию многозадачности.



А текст так можно просто пример куска.
<?php

# áåð¸ì èç áàçû url_index
#îïðåäåëÿåì upid_prev è upid_next
# äåëàåì fopen

include "function.php";
#include "includes\swich.php";
set_time_limit (0); // it may take long to index everything.
$date = date ("Y-m-d H:i:s");
echo "START $date <br>";
$fp = fopen("compress.zlib://ftp://10.128.1.2/index.gz", "r");


#fgets ÷èòàåì ñòðîêó
$new = true;
$dir_old = "/";
$dirid_old = 1;
$id = 0;
$url = "http://xxx.ru";
$db->sql_query("INSERT INTO cron_gz VALUES (
null,
'0',
'$dir_old',
'$url',
'1',
'$dirid_old',
'0',
null)");
#NULL, '$dir_old', '$url', '$dirid_old')");
while ($str=fgets($fp)){
#		echo $str;
 switch ($str[0]) {
 case ".":
  $str_len= strlen ($str);
  $dir_new= substr ( $str, 1, ($str_len-3));
  $name_len = strrpos ($dir_new , "/");
   if ($new){$new = false; break;}
   if ((strpos($dir_new, $dir_old)) === 0){
   $name = substr ($dir_new, $name_len+1, ($str_len-2));
   $url = "http://xxx.ru" . $dir_new;
   $pat = $dirid_old;
   $db->sql_query("INSERT INTO cron_gz VALUES (
null,
'0',
'$name',
'$url',
'1',
'$dirid_old',
'0',
null)");
#   NULL, '$name', '$url', '$pat')");
   $id = mysql_insert_id();
   $dirid_old = $id;
   $dir_old = $dir_new;
   }
   else{
   $serch_dir1 = substr ($dir_new, 0 , $name_len);
   $serch_dir = "http://xxx.ru" . $serch_dir1;
   $serch_dir = mysql_escape_string ($serch_dir);
   $result = $db->sql_query("SELECT * FROM cron_gz WHERE `url` = \"$serch_dir\"");
   $row = $db->sql_fetchrow($result);
   #echo $serch_dir;
   #echo ($row[id]);
   $dirid_old = $row['id'];
   #echo "<br>";
   $name = substr ($dir_new, $name_len+1, ($str_len-2));
   $url = "http://xxx.ru" . $dir_new;
   $pat = $dirid_old;
   $db->sql_query("INSERT INTO cron_gz VALUES (
null,
'0',
'$name',
'$url',
'1',
'$dirid_old',
'$0',
null)");
#NULL, '$name', '$url', '$pat')");
   $id = mysql_insert_id();
   $dirid_old = $id;
   $dir_old = $dir_new;
   }
 break;

 case "-":
 $fil_new2 = substr($str ,1);
  $arr = str_word_count ( $fil_new2 , 2 );
  $arr1 = array_keys ($arr);
  #$arr1[3] +13 íà÷ èìåíè ôàéëà
  $fil_name = substr($str ,$arr1[3]+13);
  $fil_name = ltrim($fil_name);
	 $uid_len = strlen($arr[$arr1[2]]);
   $nach =$arr1[2]+$uid_len+1;
   $size = substr ($str, $nach , $arr1[3]-$nach);
#   $konec = $arr1[3]-$nach;
 #   echo "uid - $uid_len : nacalo - $nach : konec - $konec : size - $size";
#	echo "<br>";
$url_fil = $url . "/" . $fil_name;
$db->sql_query("INSERT INTO cron_gz VALUES (
null,
'0',
'$fil_name',
'$url_fil',
'0',
'$dirid_old',
'$size',
null)");

#NULL, '$name', '$url', '$pat')");



 # print_r ($arr);
 # echo "<br>";
 # echo $fil_new3;
 # echo "<br>";
  break;
 }

}

#case ïåðâûé ñèìâîë


/*
$lol = "lol iz good";
$dl = (strlen ($lol)) - 1;
echo $lol[1-$dl];
*/

  $date = date ("Y-m-d H:i:s");
echo "STOP $date <br>";

	$id = mysql_insert_id();
	echo "çàïèñêé $id";

?>

  • 0
на всём готовеньком ты счастлив ли дурак?

IPTV online

#4 *soulburner*

*soulburner*

    You have reached level cap

  • True Members
  • PipPipPipPipPip
  • 5619 сообщений
225
Очень хороший
  • Пол:Мужчина

Опубликовано 14 May 2007 - 03:26

Давай с обсуждением алгоритма сюда - https://swnet.spb.ru/...showtopic=11137 ?

А в этом топике хотелось бы услышать по поводу сабжа. Есть решения. Вирт. машина - уж очень ломает :)
  • 0

#5 *soulburner*

*soulburner*

    You have reached level cap

  • True Members
  • PipPipPipPipPip
  • 5619 сообщений
225
Очень хороший
  • Пол:Мужчина

Опубликовано 14 May 2007 - 17:34

Ну что, никто мне не поможет???? Надо тестить демона, слушающего порт и скрипт, передающий в этот порт на одной машине. Виртуалку не хочу.
  • 0

#6 GlebVt

GlebVt

    нервное чучело

  • True Members
  • PipPipPipPipPip
  • 6290 сообщений
69
Хороший
  • Пол:Мужчина

Опубликовано 15 May 2007 - 18:31

вторая машина?
могу продать бюджетный вариант ))) смотри в купле/продаже(наверное лучшебы в юморе,но оно там ) )
  • 0

#7 *soulburner*

*soulburner*

    You have reached level cap

  • True Members
  • PipPipPipPipPip
  • 5619 сообщений
225
Очень хороший
  • Пол:Мужчина

Опубликовано 15 May 2007 - 20:46

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

хы-хы. барыга =))))
  • 0


Посетителей, читающих эту тему: 2

0 пользователей, 2 гостей, 0 анонимных пользователей