Текущий архив: 2005.09.25;
Скачать: CL | DM;
Вниз
широковещательный 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;
Скачать: CL | DM;
Память: 0.48 MB
Время: 0.071 c