Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: Для новичков > Indy 10


Автор: Kirgston 8.1.2009, 00:34
Всем доброго времени суток. Вот я использую Инди 10 Сервер. В нем я почему то не могу вписать нужный мне ип сервера. Я делаю клиент для чужой машины и мне надо указать будущий ип, но сделать мне это Инди 10 не дает :(. Помогите пожалуйста. Там доступно только ВанИП, ЛанИП, а вписать нужный не могу. Зарание большое спасибо!

Автор: Kirgston 8.1.2009, 18:11
Ребята что никто не знает как поменять IP в Indy 10 TCP Server?? =)

Автор: Akella 9.1.2009, 00:38
Цитата(Kirgston @  8.1.2009,  00:34 Найти цитируемый пост)
Я делаю клиент для чужой машины

А сервер тут при чём? На клиенте и меняй.

Автор: Kirgston 9.1.2009, 23:02
Ну например если я ставлю у себя 127.0.0.1 на Инди сервере то всё работает, как только я переношу на нужный мне компютер ... всё... уже ничего не работает :(

Автор: Bose 10.1.2009, 01:06
Цитата(Kirgston @  9.1.2009,  23:02 Найти цитируемый пост)
Ну например если я ставлю у себя 127.0.0.1 на Инди сервере 

а куда ты вписываешь 127.0.0.1 на Инди сервере, если не секрет?

Добавлено через 2 минуты и 34 секунды
Цитата(Kirgston @  9.1.2009,  23:02 Найти цитируемый пост)
уже ничего не работает :( 

Совсем ничего? 
Твоя программа перестаёт работать, Delphi вылетает с ошибкой, дохнут жётские диски, взрывается монитор, лампочки осыпают тебя осколками битого стекла, выключается свет, в городе останавливается автомобили, хаос? 

Тогда больше не устанавливай 127.0.0.1.

Автор: Kirgston 10.1.2009, 10:11
Ну как... я не помню куда имеенно но в Обжект Инспекторе открываю панель, а там и ставлю порт и ИП. Ошибка ... мол орет что сервер не найдет. Может это изза того что там установлен файрволл?

Автор: Bose 10.1.2009, 12:34
Цитата(Kirgston @  10.1.2009,  10:11 Найти цитируемый пост)
Ну как... я не помню куда имеенно но в Обжект Инспекторе открываю панель, а там и ставлю порт и ИП. Ошибка ... мол орет что сервер не найдет. Может это изза того что там установлен файрволл? 

IP обычно указывается в клиенте(TidTCPClient). И это обычно IP-адрес сервера. Когда ты тестируешь на том же компе, что и сервер, то это 127.0.0.1 (или localhost). А когда сервер установлен в другом месте, то тебе нужно знать IP сервера.

Автор: Kirgston 10.1.2009, 13:39
Ну просто... да я понимаю. Но хмм... вроде ИП сервера и ИП клиента должен быть одинаковый или я не прав? По крайней мере так было раньше...

Автор: Bose 10.1.2009, 14:16
Цитата(Kirgston @  10.1.2009,  13:39 Найти цитируемый пост)
вроде ИП сервера и ИП клиента должен быть одинаковый или я не прав? По крайней мере так было раньше... 

IP сервера - это тот, который ты видишь когда выполняешь команду ipconfig в Windows shell сервера. А компоненту TidTcpServer какбы незачем знать ip, он тупо слушает указанный порт.
IP клиента - это ip, который ты видишь когда выполняешь команду ipconfig в Windows shell на клиенте. А чтобы подключится к серверу, клиент должен знать ip-адрес сервера. Для этого в компоненте TidTcpClient есть свойство Host. В это свойство вписывается ip-адрес сервера.

Сайт с документацией по Indy: http://www.indyproject.org/docsite/

Добавлено через 15 секунд
надеюсь не сильно наврал.

Добавлено через 26 секунд
 smile 

Автор: Kirgston 11.1.2009, 00:54
Спасибо большое! Буду наедятся что это был файрволл =)

Автор: Akella 11.1.2009, 13:23
Цитата(Kirgston @  10.1.2009,  13:39 Найти цитируемый пост)
вроде ИП сервера и ИП клиента должен быть одинаковый или я не прав?

сам подумай, что ты написал!!!!!!!!!!!!!! smile

Добавлено @ 13:25
я думал, что у меня логика храмает....


Kirgston, не нужно быть программистом, тем более сетевым, чтобы догадаться
1. Сервер ждёт чего-то отклиента и о клиенте ваще ничего не знает
2. Клиент ДОЛЖЕН знать адрес сервера (на важно, на одной они машине или нет).

Представь, что ты клиент, а Винград - сервер. Винград ничего не знает о тебе пока ты не подключишься. По крайней мере твой IP адрес Винград до подключения не знает. А ТЫ, КАК КЛИЕНТ, ЗНАЕШЬ IP АДРЕС ВИНГРАДА, А Винграду, к серверу, всё равно на каком он IP адресе живёт, главное, чтобы клиент знал.

Так понятнее?

Автор: Kirgston 15.1.2009, 11:23
Ну смотрите. Почему тогда в любом случае... вот
клиент
Код

procedure TForm3.Conn;
var Stream : TMemoryStream;
  BufSize : int64;
begin
 Stream:=TMemoryStream.Create;
 Client.Connect;
  try
    BufSize := Client.IOHandler.ReadInt64(true);
    Client.IOHandler.ReadStream(Stream, BufSize);
    Stream.Position := 0;
    RE.Lines.LoadFromStream(Stream);
  finally
    Stream.Free;
  end;
  Client.Socket.Close;
  Client.Disconnect;
  if RE.Lines.Strings[0]<>'xxx' then
  Application.Terminate;
end;

сервер
Код

procedure TForm1.ServerConnect(AContext: TIdContext);
var Stream:TMemoryStream;
BufSize:int64;
begin
Stream:=TMemoryStream.Create;
RE.Lines.SaveToStream(Stream);
BufSize:=Stream.Size;
Stream.Position:=0;
AContext.Connection.IOHandler.Write(BufSize);
AContext.Connection.IOHandler.Write(Stream,BufSize);
end;


Если ставлю на обоих 127.0.0.1 всё работает отлично. Если ставлю на сервере 127.0.0.1 (локалхост) а на клиенте ИП сервера... то ничего! Просто не работает. Оно толи не видет сервера толи... я даже не знаю...

Добавлено @ 11:33
Connection Closed Gracefully

Автор: Kirgston 15.1.2009, 12:51
Просто мне надо хоть както передать содержание одного Едита или скажем проще окна, в другое. Пробовал РидЛн\ВрайтЛн выбивает ошибку. Пробовал передать строку пишет Connection Closed Gracefully, всё получилось только с потоком памяти... и то ТОЛЬКО на 127.0.0.1 если я конекчусь через инет кудато то уже ничего не работает :(

Автор: Bose 15.1.2009, 15:33
Connection Closed Gracefully - это не совсем ошибка. Здесь можно почитать подробнее: http://www.swissdelphicenter.ch/en/showarticle.php?id=1  (на английском)
А здесь обсуждают тоже самое на русском: http://programmersforum.ru/showthread.php?t=13289

Автор: Kirgston 15.1.2009, 16:57
Да но...  при трасировки оно ждет что ему передадут пакет около 3 секунд а может и целых 10... потом кидает этот еррор :(

Добавлено через 42 секунды
Помогите пожалуйста. Просто надо передать 1 слово и немогу......

Автор: Bose 15.1.2009, 17:25
Цитата(Kirgston @  15.1.2009,  10:23 Найти цитируемый пост)
Если ставлю на обоих 127.0.0.1 всё работает отлично. Если ставлю на сервере 127.0.0.1 (локалхост) а на клиенте ИП сервера... то ничего! Просто не работает. Оно толи не видет сервера толи... я даже не знаю...

Объясни пожалуйста что ты называешь "ставить ip на сервере"?

Цитата(Kirgston @  15.1.2009,  11:51 Найти цитируемый пост)
и то ТОЛЬКО на 127.0.0.1 если я конекчусь через инет кудато то уже ничего не работает :( 

С инетом может много нюансов. Файреволл может блокировать порт(кстати какой порт?), как локальный на клиенте, так и локальный на сервере, так и где-то по пути(у провайдера). Так что проблема может быть и не в Indy.

Автор: Kirgston 15.1.2009, 17:45
Ну когда на сервере установлен ИП 127.0.0.1 и на клиенте. Там на сервере я могу выбирать ИП. Лан ИП \ Ван ИП и Локалхост.

Вот щас даже пытаюсь сделать очень простой пример...
Серв
Код

procedure TForm1.ServConnect(AContext: TIdContext);
begin
 AContext.Connection.IOHandler.WriteLn('123');
end;

Клиент
Код

procedure TForm1.ClientConnected(Sender: TObject);
var S:string;
begin
Client.IOHandler.ReadLn(Edit1.Text);
end;


И кидает конекшен колесед керфулли ((((

Автор: Bose 15.1.2009, 18:00
Цитата(Kirgston @  15.1.2009,  16:45 Найти цитируемый пост)
Ну когда на сервере установлен ИП 127.0.0.1 и на клиенте. Там на сервере я могу выбирать ИП. Лан ИП \ Ван ИП и Локалхост.

На каком сервере? На компоненте TidTCPServer?

Проверь фаерволлы на всякий случай.

Автор: Kirgston 15.1.2009, 18:14
Да именно.

Ну у меня НОД32 больше ничего, тестилось на ещё одной машине где также только нод. Потом на ещё одной где стоит оут пост файрвел. Но там данный порт открыт.

Добавлено через 2 минуты и 35 секунд
Вот сейчас при попытке соеденится к себе самому пишет сокет еррор конекшен рефюс

Автор: Kirgston 16.1.2009, 12:31
Хех... проблема была в ИП... вобщем всем кому интересно у меня всё заработало с ИП 0.0.0.0

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)