Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Сети";
Текущий архив: 2005.09.25;
Скачать: [xml.tar.bz2];

Вниз

широковещательный connect   Найти похожие ветки 

 
Dok   (2005-06-01 20:56) [0]

несколько TCPClient клиентов в сети, одновременно являющиеся и серверами TCPServer. Необходимо при открытии формы узнать на каких компьютерах запущена данная программа. Пробовал реализовать вручную через Connect, но при отсутствии программы на удаленном хосте - прорамма виснет секунд на 10. И так на каждом хосте. Хотелось бы узнать мгновенно (типа как в ку-чате)...


 
Eraser ©   (2005-06-01 20:59) [1]

Dok   (01.06.05 20:56)

Тут тебе поможет протокол UDP.


 
Dok   (2005-06-01 21:01) [2]

Хех, в том то и дело, что хочу на TCP. :) Просто хочу узнать где стоит моя программа...


 
Reindeer Moss Eater ©   (2005-06-01 21:05) [3]

Тебе какая разница по какому протоколу получать данные о том где запущена программа?
Ты же сам сказал Хотелось бы узнать мгновенно


 
Eraser ©   (2005-06-01 21:07) [4]

Dok   (01.06.05 20:56)

Через TCP в общем случае задача не решаема, в частном - можно отсылать запросы всем компам из "Сетевого окружения", но это по-моему извращение.

ЗЫ Можно ещё через Multicast сделать...


 
Dok   (2005-06-01 21:08) [5]

UDP протокол вроде как закрыт файрволами... Ладно, спасибо,  просто думал есть готовое решение. Будем разбираться дальше...


 
Dok   (2005-06-01 21:10) [6]

сошлите плиз меня на хэлпную прогу как на UDP это реализовать...


 
Alexander Panov ©   (2005-06-01 21:44) [7]

Dok   (01.06.05 20:56)
но при отсутствии программы на удаленном хосте - прорамма виснет секунд на 10


Почему виснет? В какой момент?


 
Dok   (2005-06-01 21:53) [8]

дык сервак на удаленном хосте не запущен, поэтому наверное и тормозит... Connect именно виснет на 10 секунд...


 
Alexander Panov ©   (2005-06-01 22:02) [9]

Dok   (01.06.05 21:53) [8]

По адресу подключаешься или по имени?
Компоненты какие используешь?


 
Eraser ©   (2005-06-01 22:17) [10]

Alexander Panov ©   (01.06.05 22:02) [9]
По адресу подключаешься или по имени?
Компоненты какие используешь?


Так эти имена/адреса надо откуда-то ещё брать... а откуда? Тут udp нужен.


 
Dok   (2005-06-01 22:20) [11]

Ага, тока что через него сделал. Всё рулит. Спасибо за советы...


 
Глеб ©   (2005-06-02 04:46) [12]


> Dok   (01.06.05 22:20) [11]


А как это моэно сделать?
Я вот тоже с этим сейчас мучаюсь.


 
Lex_! ©   (2005-06-02 06:06) [13]

Broadcast
одна подсеть


 
Lex_! ©   (2005-06-02 06:07) [14]


> Connect именно виснет на 10 секунд...

локалка если - таймаут соединения поставь одну секунду...


 
Dok   (2005-06-02 08:44) [15]

Где ставить тайаут не нашёл.
Делал через UDP - сервер не принимает пакеты. Почему не знаю.

Клиент UPD:
broadcast:=true;
port:=0;
host:="192.168.1.255" - моя локалка
active:=true;

Сервер UPD:
broadcast:=true;
Active:=true;

procedure TChatF.IdUDPServer1UDPRead(Sender: TObject; AData: TStream;
 ABinding: TIdSocketHandle);
var
 StringFormatedStream: TStringStream;
 msgType:integer;
 MSG,S:string;
begin
 showmessage(msg);
 try
 StringFormatedStream := TStringStream.Create("");
 StringFormatedStream.CopyFrom(AData, AData.Size);
 MSG:=StringFormatedStream.DataString;
 msgType:=StrToInt(MSG);

 Case msgType of
 0: IdUDPClient1.Send("1");
 1: ListBox1.Items.Add(ABinding.PeerIP);
 end;

 ABinding.SendTo(ABinding.PeerIP, ABinding.PeerPort, s[1], Length(s)); //перенаправляем сообщение
 StringFormatedStream.Free;
 except
 end;
end;

 IdUDPServer1.Active:=true;
 HostList.Clear;
 IdUDPClient1.Host:="192.168.1.255";
 IdUDPClient1.Active:=true;
 IdUDPClient1.Send("0");

шоумессаг не отработал ни разу... Т.е. приема ответа не было ни разу. Трабла не знаю где. Фаеры отключены.
Искал в форуме - такая же у всех незадача...


 
Dok   (2005-06-02 09:01) [16]

Сниффером ловится пакет...
Странно. а программой не ловится...
Помогите...

==============================================================================
Packet ID: 1     TTL: 128
Packet size: 29    bytes type: UDP
Source IP      :    192.168.1.95: 12036
Destination IP :   192.168.1.255: 0
------------------------------ Packet dump -----------------------------------
000000 45 00 00 1D 2B 10 00 00 | 80 11 8B 11 C0 A8 01 5F     E..+.........._
000010 C0 A8 01 FF 04 2F 00 00 | 00 09 46 FE 30              ...../....F.0


 
Глеб ©   (2005-06-02 09:08) [17]

В Delphi 6 в папках Demos\Internet и Demos\Indy есть примеры.


 
Dok   (2005-06-02 09:14) [18]

Нет возможности достать 6-ю версию. В моих примерах - ссылка на сайт, на сайте только tcp примеры.
кань если не сложно на dimushkin@mail.ru
Буду очень благодарен...


 
Dok   (2005-06-02 09:59) [19]

Всё, разобрался сам.
закрывайте тему...


 
Eraser ©   (2005-06-02 15:03) [20]

Dok   (02.06.05 08:44) [15]
Клиент UPD:
broadcast:=true;
port:=0;
host:="192.168.1.255" - моя локалка
active:=true;


А порт кто будет ставить?



Страницы: 1 вся ветка

Форум: "Сети";
Текущий архив: 2005.09.25;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.49 MB
Время: 0.04 c
3-1123759223
Juice
2005-08-11 15:20
2005.09.25
Join с параметром ХП


1-1125632650
leonidus
2005-09-02 07:44
2005.09.25
Расположении формы на экране при двух мониторах


5-1100428686
xkiller
2004-11-14 13:38
2005.09.25
Скинообразная кнопка


14-1125577447
Джо
2005-09-01 16:24
2005.09.25
Oberon System


3-1123651386
serjufa
2005-08-10 09:23
2005.09.25
вылезает ошибка при выполнении SELECT





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский