Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

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

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

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 10.04.2008, 14:13   #1
JoanM
Дешево пишу проги)
Форумчанин Подтвердите свой е-майл
 
Аватар для JoanM
 
Регистрация: 12.12.2006
Сообщений: 106
По умолчанию IP клиента

Здравствуйте!
У меня такой вопрос:
Я шарил по справке форума, но там ничего конкретного найти не смог, поэтому пишу сюда. У меня есть серверное и клиентское приложения на Socket'ах (Server socket...) Подскажите, как определить на сервере при получении нового сообщения, от кого оно, точнее - от какого IP пришло. Соединяюсь по LAN. Ещё если можно подскажите, как повешенный на Socket'ах чат запустить через интернет (чтоб соединялся клиент с удалённым серваком через инет).
Заранее спасибо!
JoanM вне форума Ответить с цитированием
Старый 10.04.2008, 21:44   #2
Beermonza
Инженер ИС
Старожил
 
Аватар для Beermonza
 
Регистрация: 13.12.2006
Сообщений: 2,671
По умолчанию

Может быть одна из статей поможет:
http://pblog.ru/?p=91
http://pblog.ru/?p=100
Руководитель проекта MMO 2D RPG: Настоящее имя Денис Стрижак (10.05.1981-6.02.2019) Мир духу его
Beermonza вне форума Ответить с цитированием
Старый 10.04.2008, 23:13   #3
BOBAH13
Android Developer
Старожил Подтвердите свой е-майл
 
Аватар для BOBAH13
 
Регистрация: 19.02.2007
Сообщений: 3,708
По умолчанию

Если на сокетах на TCP/Ip то хоть сеть хоть инет пофигу. Ну а если вы и на сокетах пишете, то вопрос как получить ip приходящих данных - это помойму ерунда какая-то Вы же все оформляите на сокетах, весь процесс там вся необходимая информация и содержится.
BOBAH13 вне форума Ответить с цитированием
Старый 12.04.2008, 09:25   #4
JoanM
Дешево пишу проги)
Форумчанин Подтвердите свой е-майл
 
Аватар для JoanM
 
Регистрация: 12.12.2006
Сообщений: 106
По умолчанию

Цитата:
Вы же все оформляите на сокетах, весь процесс там вся необходимая информация и содержится.
Правильно, информация есть (список подключенных IP). Ну вот допустим в сервере я пишу, что при OnClientRead прочитать IP клиента, приславшего сообщение, и отправить лично ему ответ. Вся фишка в том, что при отправлении сообщения клиентом, он не отправляет свой IP, а на сервере тупо висит лист всех подключений (лист IP) - в Server Socket. Мне нужно с помощью компонента TServerSocket (или какого-нить другого) пробить IP клиента приславшего, даже если путём перебора по листу IP на серваке. Но не присылая клиентом самим свою отличительную метку (например ID), я не смогу осуществить поиск нужного клиента. Тут какая-то функция должна быть. Вот прошу помочь!
JoanM вне форума Ответить с цитированием
Старый 16.04.2008, 23:04   #5
malevich
Пользователь
 
Аватар для malevich
 
Регистрация: 01.11.2006
Сообщений: 63
По умолчанию

при присоединении клиента к серверу будет выдаватся его IP

procedure TForm1.ServerSocket1ClientConnect(S ender: TObject;
Socket: TCustomWinSocket);
begin
ShowMessage(socket.LocalHost);
end;
malevich вне форума Ответить с цитированием
Старый 16.04.2008, 23:05   #6
malevich
Пользователь
 
Аватар для malevich
 
Регистрация: 01.11.2006
Сообщений: 63
По умолчанию

или точнее socket.RemoteAddress
malevich вне форума Ответить с цитированием
Старый 17.04.2008, 22:30   #7
DeCoder
Пользователь
 
Регистрация: 17.04.2008
Сообщений: 22
По умолчанию

Хм... На сервер приходит какая-либо информация от клиента, точнее, от его ip. Не знаю как, но можно по полученному сообщению определить Ip.
Просто сегодня часов 6 гуглил - так ничего на данную тему не нашёл кроме этого(((.
DeCoder вне форума Ответить с цитированием
Старый 18.04.2008, 09:30   #8
Квэнди
Старожил
 
Аватар для Квэнди
 
Регистрация: 13.12.2006
Сообщений: 3,859
По умолчанию

Что есть сервер ? что есть клиент ?
ICQ не для вопросов, а для предложений. Для вопросов используйте форум
IRC канал клуба программистов|Мои статьи
Квэнди вне форума Ответить с цитированием
Старый 27.04.2008, 16:39   #9
Beermonza
Инженер ИС
Старожил
 
Аватар для Beermonza
 
Регистрация: 13.12.2006
Сообщений: 2,671
По умолчанию Популярно...

JoanM, DeCoder, вам же сказали - Socket.RemoteAddress , означает: "показать удаленный адрес" , это свойство возвращает строку типа String, в ней нужный вам IP клиента.
Пример:

S:=Socket.RemoteAddress;

...переменная S типа String будет содержать удаленный IP адрес.

Пишите это, допустим, на прием сообщения у сервера OnClientRead тогда, каждый раз будет определяться IP клиента, приславшего сообщение. Или при подключении, для составления списка IP-адресов клиентов.
Руководитель проекта MMO 2D RPG: Настоящее имя Денис Стрижак (10.05.1981-6.02.2019) Мир духу его
Beermonza вне форума Ответить с цитированием
Старый 27.04.2008, 17:55   #10
BOBAH13
Android Developer
Старожил Подтвердите свой е-майл
 
Аватар для BOBAH13
 
Регистрация: 19.02.2007
Сообщений: 3,708
По умолчанию

Оформите пакет вида
Код:
TPacked  = packed record
  MyIP: Integer;
  ...
end;
ну или в таком духе чтот, как удобнее для вас. И отправляется все что хотите
BOBAH13 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как определить номер клиента leontv Работа с сетью в Delphi 11 28.03.2010 23:19
ЧАТЮ для клиента и сервера -HunteR- Работа с сетью в Delphi 27 18.04.2008 09:30
код proxy для клиента. AS3 crazy horse Общие вопросы Web 0 03.03.2008 11:44
Определение IP адреса клиента RoamingFire Работа с сетью в Delphi 2 28.02.2008 14:08
как серверу INDY распознать клиента мандарин Работа с сетью в Delphi 2 24.10.2007 13:31