Страница 2 из 2

Re: Посылка данных в порт

Добавлено: 15.10.2009 12:04:59
dionic
Дык я и добавлял туда ip и вместо него 127.0.0.1 записывал, а всё равно получаю 127.0.0.1.

Re: Посылка данных в порт

Добавлено: 15.10.2009 13:02:44
Attid
вместо не надо. надо рядом

Код: Выделить всё

127.0.0.1 localhost.localdomain localhost
192.168.1.1 www.mydomain.org mydomain


Добавлено спустя 18 минут 15 секунд:
а хотя зачем тебе локальный ИП ? у меня например их много

Код: Выделить всё

 ifconfig | grep addr:
          inet addr:192.168.1.101  Bcast:192.168.1.255  Mask:255.255.255.0
          inet addr:127.0.0.1  Mask:255.0.0.0
          inet6 addr: ::1/128 Диапазон:Узел
          inet addr:192.168.0.44  P-t-P:192.168.7.201  Mask:255.255.255.255
          inet addr:192.168.2.44  P-t-P:192.168.15.1  Mask:255.255.255.255
          inet addr:10.25.2.101  P-t-P:192.168.15.1  Mask:255.255.255.255
          inet addr:10.86.2.153  P-t-P:10.86.2.150  Mask:255.255.255.255
          inet6 addr: fe80::213:d4ff:fed1:3fd0/64 Диапазон:Ссылка


какой из них ты хочешь получить ? и что это тебе даст ?

Re: Посылка данных в порт

Добавлено: 15.10.2009 13:20:20
dionic
Ну допустим у меня на компе 2 проги обмениваются данными через сокеты, одна сервер другая клиент. Если ip динамический и произошло переподключение , то нужно соответственно сервер на новом ip создать и чтобы клиент на новый ip стучался. Поэтому на сервере нужно всё время проверять не изменился ли ip и перебиндить сокет если что. А клиент получая когда коннектится тоже новый ip использует. Ну что-то типо того=)))

Я пробывал в хостс и рядом писать новый ip. Только не помогло. Видно что то не так пишу.

А если ip внешний, то эта функция вернет его? Или опять 127.0.0.1 ?
И что за ifconfig?

Re: Посылка данных в порт

Добавлено: 15.10.2009 15:42:32
v-t-l
dionic писал(а):Ну допустим у меня на компе 2 проги обмениваются данными через сокеты, одна сервер другая клиент.

Если на одном компе, так зачем нужно знать внешний ip? 127.0.0.1 не работает?

Re: Посылка данных в порт

Добавлено: 15.10.2009 15:50:07
dionic
Да ,конечно, работает , а вот с другого компа потом как коннектится к серверу на этом?

Re: Посылка данных в порт

Добавлено: 15.10.2009 16:13:54
v-t-l
а как другой комп узнает новый ip первого?
только через DNS или WINS.

Добавлено спустя 12 минут 32 секунды:
т.е. по имени первого компа

Re: Посылка данных в порт

Добавлено: 15.10.2009 16:21:00
dionic
Ну что то типо того. :D

Re: Посылка данных в порт

Добавлено: 15.10.2009 21:19:41
Attid
вот и пусть пользователь вбивает имя сервера, а ты его резолфь в ИП. этой функцией, только не вбивай туда имя своей машины, а сервера.

Re: Посылка данных в порт

Добавлено: 26.10.2009 16:04:07
dionic
Mr.Smart писал(а):dionic
Смотри пример из Synapse demo\httpserv


Обнаружилась такая вот инетересная вещь. В проекте demo\httpserv при соединении с сервером создается новый экземпляр класс TTCPBlockSocket, и его свойству Socket присваивается значение, полученное с помощью функции Accept сервера. После чего обмен данными можно вести с клиентом через этот новый экземпляр класса.
А вот если передать значение , полученное с помощью функции Accept сервера, другому приложению и присвоить его свойству Socket нового экземпляра класса TTCPBlockSocket, то обмен данными не происходит, так как не восстанавливаются определённые структуры (для определения локального адреса и удаленного). Возникает собственно вопрос как быть?

Возможно ли писать прям в порт на котором было осуществлено соединение сервером (ну т.е. который он слушает)?
Народ у кого есть какие мысли поделитесь плиз...

Re: Посылка данных в порт

Добавлено: 26.10.2009 16:43:36
Mr.Smart
dionic
Есть только одна мысль! Зачем так извращаться?
Я не очень понимаю, что у вас за задача. И предполагаю, что вы неправильно продумываете алгоритм решения этой задачи.

Re: Посылка данных в порт

Добавлено: 26.10.2009 17:12:56
dionic
:) Прикольная мысля. Может и так.
Ладно попробую объяснить зачем всё так сложно.
У меня имеется программа для снятия показаний со счетчиков э/э. Счетчики могут быть либо локально подсоединены прямо к УСПД (пром. комп по RS-232) или удалённо через коммуникатор. Так вот локально всё работает на ура. Да и удаленно тоже при некоторых условиях.
Хочется просто выделить ту часть логиги , которая предоставляет подсоединение к коммуникатору в отдельную программу.(коммуникатор может только сам коннектится , т.е. на компе необходимо создать сервер для прослушки порта).
Предполагалось так, программа коммутирующая коммуникатор может по запросу из основной программы сборщика , приконнектить комуникатор на определенный порт и передать номер сокета. А в основной программе с новым экземпляром класс TTCPBlockSocket можно было передавать данные по этому сокету.
Так просто разделяются функции коннекта и сбора данных в разные программы, и если изменится способ коннекта коммуникатора (например можно будет к коммуникатору самому коннектится, а не ждать пока он это сделает), то необходимо будет допилить только одну маленькую программу (так сказать модуль системы) , а не лезть в основную по сбору данных.
Ну в общем примерно так=). Может , конечно, я и не правильно что-то делаю, просто начальство хочет больше модульности...А я извращаюсь...
Mr.Smart если есть какие-нибудь мысли по поводу того как работать именно с портом на котором создаешь сокет или как передать значение свойства Socket в другую программу , а там восстановить передачу данных , поделитесь плиз :D