Форум программистов
 
Регистрация на форуме тут, о проблемах пишите сюда - alarforum@yandex.ru, проверяйте папку спам! Обязательно пройдите активизацию e-mail, а тут можно восстановить пароль.

Как купить рекламу на форуме


Вернуться   Форум программистов > Delphi программирование > Работа с сетью в Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail


Ответ
 
Опции темы
Старый 27.10.2010, 11:11   #1
leonw
Пользователь
 
Регистрация: 08.08.2008
Сообщений: 39
Сообщение ClientSocket y ServerSocket - как найти серверы

Добрый день! может кто подсказать, как найти все сервера в сети??? (ServerSocket). я пытался сделать через фор но так и ничего не получилось.
Код:
procedure TForm1.ipconf;
var i,ip1,ip2,ip3,ip4:integer;
ip:string;
begin
ip1:=192;
ip2:=168;
ip3:=0;
for i:=1 to 255 do
begin
ip4:=i;
ip:=inttostr(ip1)+'.'+inttostr(ip2)+'.'+inttostr(ip3)+'.'+inttostr(ip4);
form1.ClientSocket1.Address:=ip;
ClientSocket1.Port:=23;
ClientSocket1.Open;
end;
end;
по идеи когда клиент должен найти сервер то сервер шлет ответ.
Код:
ListBox1.Items.Add(Socket.ReceiveText);
Сервер.
Код:
procedure TForm1.ServerSocket1Accept(Sender: TObject;
  Socket: TCustomWinSocket);
begin
ip1:=GetLocalIP;
Socket.SendText(ip1);
end;
leonw вне форума Ответить с цитированием
Старый 27.10.2010, 11:31   #2
BARNEY
Участник клуба
 
Регистрация: 23.04.2009
Сообщений: 1,058
По умолчанию

я выхода из цикла не вижу, и где условие если он нашёл...
Если вам человек помог, не стесняйтесь говорить спасибо (весы под аватаром)
BARNEY вне форума Ответить с цитированием
Старый 27.10.2010, 12:32   #3
leonw
Пользователь
 
Регистрация: 08.08.2008
Сообщений: 39
По умолчанию

я незнаю куда ее воткнуть
Код:
 if  ClientSocket1.Socket.Connected=true then
leonw вне форума Ответить с цитированием
Старый 27.10.2010, 14:02   #4
BARNEY
Участник клуба
 
Регистрация: 23.04.2009
Сообщений: 1,058
По умолчанию

// что то типо такого..синтаксис там подправишь
Код:
procedure TForm1.ipconf;
var i,ip1,ip2,ip3,ip4:integer;
ip:string;
begin
ip1:=192;
ip2:=168;
ip3:=0;
for i:=1 to 255 do
begin
ip4:=i;
ip:=inttostr(ip1)+'.'+inttostr(ip2)+'.'+inttostr(ip3)+'.'+inttostr(ip4);
form1.ClientSocket1.Address:=ip;
ClientSocket1.Port:=23;

try

ClientSocket1.Socket.Connect //может и ClientSocket1.Open 
break;
shommessage('подключились');
except
end;

end;
end;
Если вам человек помог, не стесняйтесь говорить спасибо (весы под аватаром)
BARNEY вне форума Ответить с цитированием
Старый 28.10.2010, 07:56   #5
leonw
Пользователь
 
Регистрация: 08.08.2008
Сообщений: 39
Лампочка нито

нет тоже не помогло, а когда break ставлю он после ниго и прирывается все.
leonw вне форума Ответить с цитированием
Старый 28.10.2010, 08:36   #6
BARNEY
Участник клуба
 
Регистрация: 23.04.2009
Сообщений: 1,058
По умолчанию

ну если до break дошел значит приконнектился... отправьте сообщение на сервер в

Код:
ClientSocket1.Socket.Connect //может и ClientSocket1.Open 
// сообщение на сервер 
break;
Если вам человек помог, не стесняйтесь говорить спасибо (весы под аватаром)

Последний раз редактировалось BARNEY; 28.10.2010 в 08:39.
BARNEY вне форума Ответить с цитированием
Старый 28.10.2010, 09:25   #7
leonw
Пользователь
 
Регистрация: 08.08.2008
Сообщений: 39
Восклицание пробывал

уже пробывал:
Код:
var x,i,ip1,ip2,ip3,ip4:integer;
ip:string;
begin
ip1:=192;
ip2:=168;
ip3:=0;
for i:=1 to 255 do
begin
ip4:=i;
ip:=inttostr(ip1)+'.'+inttostr(ip2)+'.'+inttostr(ip3)+'.'+inttostr(ip4);
form1.ClientSocket1.Address:=ip;
ClientSocket1.Port:=4001;
try
ClientSocket1.Open;
ClientSocket1.Socket.Connect(5000); //ìîæåò è ClientSocket1.Open
ClientSocket1.Socket.SendText('111111111');
break;
showmessage('коннект');
except
end;
 end; end;
сервер я разместил 192,168,0,85 и 192,168,0,128
с брейкам доходит до первой строчки и все т.е 192,168,0,1 далше не идет.
если брейк убираю то клиент пытаеться с конектиться но не конектиться.
leonw вне форума Ответить с цитированием
Старый 28.10.2010, 09:39   #8
BARNEY
Участник клуба
 
Регистрация: 23.04.2009
Сообщений: 1,058
По умолчанию

Код:
procedure TForm1.Button2Click(Sender: TObject);
var
s:TStringStream;
ip:string;
i:Integer;
begin
   for I := 0 to 255 do
   begin
    IdTCPClient1.Host:='192.168.0.'+IntToStr(i);
    try
     IdTCPClient1.Connect;
    s:=TStringStream.Create; //Инициализация потока s
		s.WriteString(Edit1.Text);  //Запись сообщения в поток s
		s.Position:=0; //Установка позиция на начало потока s
		IdTCPClient1.IOHandler.Write(s, s.Size, true); //Передача сообщения
		s.Free; //Уничтожение потока s
     IdTCPClient1.Disconnect; //Отсоединение
     Break;
    except
    end;
   end;
end;
У меня код работает, проверил... единственно что я до 6 ip ждал около 30-40 сек.. а до 85 сколько будет..может вы не дожидаетесь?

если правильно понимаю ClientSocket1.Socket.Connect(5000); это ждать 5 сек т.е. чтобы пробежаться от 0 до 85 надо 7 минут.
Если вам человек помог, не стесняйтесь говорить спасибо (весы под аватаром)

Последний раз редактировалось BARNEY; 28.10.2010 в 09:42.
BARNEY вне форума Ответить с цитированием
Старый 28.10.2010, 10:25   #9
Gambler
Игрок
Форумчанин
 
Аватар для Gambler
 
Регистрация: 29.10.2006
Сообщений: 367
По умолчанию

ну вообще то так не делают..... Что уж не по всему пространству интернет ищем? Просто нужен статичный IP. На него сажается сервер. Ну или можно где то повесить файл, в котором будет IP сервера. А еще совет (если уж делаешь поиск сервера внутри локалки) делай определение IP через UDP. Совсем просто и куда качественнее. Шлешь широковещательный пакет. Кто отозвался - тот и сервер. Можно по TCP подключаться.
Жизнь всегда игра. Но смерть - не всегда поражение.

#define true (Math.random()>0.5) //Удачной отладки
Gambler вне форума Ответить с цитированием
Старый 28.10.2010, 10:46   #10
BARNEY
Участник клуба
 
Регистрация: 23.04.2009
Сообщений: 1,058
По умолчанию

Я бы ещё повесил что то типо выбора сервера или список доступных... вдруг отзовутся несколько
Если вам человек помог, не стесняйтесь говорить спасибо (весы под аватаром)
BARNEY вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме 20000 рублей в месяц

Опции темы


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
ClientSocket и ServerSocket Hacker19_90 Работа с сетью в Delphi 1 23.03.2010 01:17
ClientSocket и ServerSocket KoBRaAndrey Работа с сетью в Delphi 4 08.01.2010 19:21
ServerSocket и ClientSocket Sensizu Работа с сетью в Delphi 5 30.12.2009 00:09
ClientSocket и ServerSocket Blood o men Работа с сетью в Delphi 2 25.11.2009 11:36
Serversocket,clientsocket prizrak1390 Работа с сетью в Delphi 10 21.04.2009 15:04


Проекты отопления, пеллетные котлы, бойлеры, радиаторы
интернет магазин respective.ru
Пеллетный котёл Emtas
котлы EMTAS