Обычно разрешается одно использование адреса сокета
Автор темы: *soulburner*, May 12 2007 04:36
6 ответов в этой теме
#1
Опубликовано 12 May 2007 - 04:36
Вобщем, решил написать демона для поиска в DC++ (см https://swnet.spb.ru/...showtopic=11137 )
Проблема вот в чем - создаю демона, который случает определеный порт (по UDP). Запускаю. Все ок.
Но потом, если я пытаюсь создать сокет из другого скрипта, чтобы послать что-то этому демону, то получают ошибку
"Обычно разрешается одно использование адреса сокета"
Я, конечно, понимаю, что в реальных ситауциях этого не будет, т.к. демон будет висеть на одной машине, а скрипт будет к нему коннектиться с другой. Но как мне побороть это у себя? Надо ведь как-то дебажить!?
Проблема вот в чем - создаю демона, который случает определеный порт (по UDP). Запускаю. Все ок.
Но потом, если я пытаюсь создать сокет из другого скрипта, чтобы послать что-то этому демону, то получают ошибку
"Обычно разрешается одно использование адреса сокета"
Я, конечно, понимаю, что в реальных ситауциях этого не будет, т.к. демон будет висеть на одной машине, а скрипт будет к нему коннектиться с другой. Но как мне побороть это у себя? Надо ведь как-то дебажить!?
#2
Опубликовано 12 May 2007 - 13:26
вирт. машина не катит?
или лень? )
или лень? )
#3
Опубликовано 12 May 2007 - 17:56
А проще придумать не мог? есть сервер на нём есть листинг файлов попробуй парсить иначе поиск на прямую без базы будет крайней медленным.
Собственно.
1. Получи листинг с сервера. с помощью настройки под линукс dc++
2. Путём обработки файла загони это всё в mysql в таблицу с четкими гранями тоесть с грамотной архитектурой.
3. Хитрый sql запрос позволит тебе быстро работать с парой другой миллионов записей.
4. Напиши морду.
5. Напиши крон-скрипт проверки статуса шар с записью в базу.
Да и схема с сокетами будет зависима от работы и качества сети что не очень адекватно в связи с перспективой роста сети.
Другие же варианты приведут к заметной потери производительности и полному отсутствию многозадачности.
А текст так можно просто пример куска.
Собственно.
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";
?>
#4
Опубликовано 14 May 2007 - 03:26
Давай с обсуждением алгоритма сюда - https://swnet.spb.ru/...showtopic=11137 ?
А в этом топике хотелось бы услышать по поводу сабжа. Есть решения. Вирт. машина - уж очень ломает
А в этом топике хотелось бы услышать по поводу сабжа. Есть решения. Вирт. машина - уж очень ломает
#5
Опубликовано 14 May 2007 - 17:34
Ну что, никто мне не поможет???? Надо тестить демона, слушающего порт и скрипт, передающий в этот порт на одной машине. Виртуалку не хочу.
#6
Опубликовано 15 May 2007 - 18:31
вторая машина?
могу продать бюджетный вариант ))) смотри в купле/продаже(наверное лучшебы в юморе,но оно там ) )
могу продать бюджетный вариант ))) смотри в купле/продаже(наверное лучшебы в юморе,но оно там ) )
#7
Опубликовано 15 May 2007 - 20:46
хы-хы. барыга =))))вторая машина?
могу продать бюджетный вариант ))) смотри в купле/продаже(наверное лучшебы в юморе,но оно там ) )
Посетителей, читающих эту тему: 0
0 пользователей, 0 гостей, 0 анонимных пользователей



