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

Вниз

Цикл для ClientSocket plz Help   Найти похожие ветки 

 
PInokio   (2004-01-11 14:15) [0]

Сеществует проблема.
Слушаю порт с помощью ServerSocket.
Хочу чтоб ClientSocket скнировал локальные адреса 192.168.0.0 - 192.168.0.255 чтоб прога увидела сервер.
Как узнать что нет коннекта?
Наверное в событии OnError ClientSocket"а?

Пихаю в цикл попытки коннекта ClientSocket"а, но событие OnError происходит только при выходе из цикла.
Как мне организовать такую штуку?
Например в StarCraft или дугих играх вижу имя сервера (кто создал сетевую игру), потом просто коннекчусь к нему.


 
cr   (2004-01-11 15:58) [1]

зачем сканировать ?
клиент при попытке подключиться сначала шлет
бродкаст запрос по UDP например на 192.168.0.255
Сервера откликаются и шлют ему инфу ....


 
pinokio   (2004-01-11 16:09) [2]

Мне надо в цикле передать сообщение для компов


 
pinokio   (2004-01-11 16:10) [3]

без TimeOut это занимае очень много времени как сделать быстрее


 
cr   (2004-01-11 17:42) [4]

Я так понимаю ты TCP пользуеш ?
Это хорошо конечно но дико медленно попробуй
UDP и бродкаст-рассылки для локалки и этого
достаточно а работать будет раз в дцать
быстрее особенно если Thread"ы будеш пользовать.


 
Piter ©   (2004-01-11 18:01) [5]

Нефиг создавать две одинаковые темы - http://delphimaster.net/view/6-1073819731/

>быстрее особенно если Thread"ы будеш пользовать
каким образом с потоками будет быстрее, если использовать все таки броадкаст? :)


 
pinokio   (2004-01-12 11:42) [6]

блин мне именно под TCP ,ладно помогите сделать чтобы этот код работал хоть немного быстрее

procedure TForm1.Button1Click(Sender: TObject);
begin
Application.ProcessMessages;

ClientSocket1.Host := "204.184.4." + IntToStr (Current);
ClientSocket1.Port := 110;
Memo1.Lines.Clear;
Stopped := FALSE;
ClientSocket1.Open;
end;

procedure TForm1.ConnectNext;
begin
Application.ProcessMessages;

if ClientSocket1.Active then
ClientSocket1.Close;
if Stopped then
Exit;
Inc (Current);
if Current > Last then
Exit;
ClientSocket1.Host := "204.184.4." + IntToStr (Current);
ClientSocket1.Open;
end;

procedure TForm1.ClientSocket1Connect(Sender: TObject; Socket: TCustomWinSocket);
begin
ClientSocket1.Socket.SendText("0000");
Memo1.Lines.Add (Socket.RemoteHost + "(" + Socket.RemoteAddress + ") - Ok!");
ConnectNext;
end;

procedure TForm1.ClientSocket1Error(Sender: TObject; Socket: TCustomWinSocket;
ErrorEvent: TErrorEvent; var ErrorCode: Integer);
begin
if ErrorCode = 10060 then
Memo1.Lines.Add (ClientSocket1.Host + " - " + "Auee??ai....")
//else Memo1.Lines.Add (ClientSocket1.Host + " - " + "Iioaiu eaionoo ?oayo....");
ErrorCode := 0;
ConnectNext;
end;


 
Piter ©   (2004-01-12 21:02) [7]

pinokio

я даже в твоем примере разбираться не хочу. Понятно, что ты хочешь связываться с помощью TCP/IP. НО! Рассылку оповещений можно вполне делать через UDP по броадкасту... все остальное по TCP

P.S. UDP такой же стандарт как и TCP



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

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

Наверх





Память: 0.46 MB
Время: 0.035 c
6-1073307972
Qwert622
2004-01-05 16:06
2004.03.28
Web сервер.


9-1062410426
Cyber Chaynik
2003-09-01 14:00
2004.03.28
3D на основе фото


1-1078898432
Николай
2004-03-10 09:00
2004.03.28
редактор Edit


14-1077799448
Polevi
2004-02-26 15:44
2004.03.28
Интерфейс пользователя


1-1078922826
maxon
2004-03-10 15:47
2004.03.28
создание компонента





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский