|
|
  |
Передача данных между 2 GPRS модемами, Уважаемые, помогите. Нужна прога на С++, которая реализует передачу да |
|
|
|
Jul 25 2006, 05:20
|
Участник

Группа: Участник
Сообщений: 68
Регистрация: 24-07-06
Пользователь №: 19 039

|
Цитата(GetSmart @ Jul 24 2006, 17:37)  После получения обоими модемами динамических IP-адресов нужно обменяться ими. Я бы предложил быстренько на пару секунд законнектиться через обычное модемное соединение, пускай даже по аналоговому каналу 9600 передать эти "циферки", а потом уже общаться через IP-адреса. Нужно только знать номера обоих телефонов. Благо GPRS позволяет одновременно "разговаривать" по телефону. Нет, тут весь смысл в том что есть два компа, два GPRS модема и передачу данных нужно организовывать без всяких (кроме сервера, кот. принимает и выдаёт IP) вспомогательных средств. Обычное модемное соединение использоваться не будет.
|
|
|
|
|
Jul 25 2006, 08:28
|

Йа моск ;)
     
Группа: Модераторы
Сообщений: 4 345
Регистрация: 7-07-05
Из: Kharkiv-city
Пользователь №: 6 610

|
Цитата(GetSmart @ Jul 25 2006, 11:10)  Цитата(Yuriy_Rus) Нет, тут весь смысл в том что есть два компа, два GPRS модема и передачу данных нужно организовывать без всяких (кроме сервера, кот. принимает и выдаёт IP) вспомогательных средств. Обычное модемное соединение использоваться не будет. Я имел ввиду модемное соединение через этот же GPRS-модем, только по аналоговому каналу. Я точно не знаю, но может быть именно оно называется CSD. Короче, кроме двух GPRS модемов ничего дополнительно не надо. И этот вариант гораздо лучше передачи двух СМС-ок. Да и быстрее. Одной SMS, одной! От сервера клиенту. Этого хватит.
--------------------
"Практика выше (теоретического) познания, ибо она имеет не только достоинство всеобщности, но и непосредственной действительности." - В.И. Ленин
|
|
|
|
|
Jul 25 2006, 09:38
|
Участник

Группа: Участник
Сообщений: 68
Регистрация: 24-07-06
Пользователь №: 19 039

|
Цитата(Rst7 @ Jul 25 2006, 12:28)  Цитата(GetSmart @ Jul 25 2006, 11:10)  Цитата(Yuriy_Rus) Нет, тут весь смысл в том что есть два компа, два GPRS модема и передачу данных нужно организовывать без всяких (кроме сервера, кот. принимает и выдаёт IP) вспомогательных средств. Обычное модемное соединение использоваться не будет. Я имел ввиду модемное соединение через этот же GPRS-модем, только по аналоговому каналу. Я точно не знаю, но может быть именно оно называется CSD. Короче, кроме двух GPRS модемов ничего дополнительно не надо. И этот вариант гораздо лучше передачи двух СМС-ок. Да и быстрее. Одной SMS, одной! От сервера клиенту. Этого хватит. Сначала модем посылает свой динамический IP серверу. Затем принимает IP другого. Всё то же самое делает и другой модем. Как всё это делается одной SMS!? Или я чего-то неправильно понял? Я в GPRS модемах плоховато шарю.
|
|
|
|
|
Jul 25 2006, 13:07
|
Участник

Группа: Участник
Сообщений: 68
Регистрация: 24-07-06
Пользователь №: 19 039

|
Цитата(GetSmart @ Jul 25 2006, 15:50)  Передаётся одной СМС один IP. Модем, получивший его посылает туда IP-пакет. Таким образом другой модем (сервер) получает IP-адрес клиента.
Но вариант с СМС неидеален. Как я уже говорил. Что-то то ли я не понимаю, то ли ты... Что ты подразумеваешь под "ТУДА"? Как один модем может стать сервером, а другой клиентом? Сервер он на то и нужен, что IP у него постоянный. А у GPRS модема IP выдаются каждый раз новый при подключении. Т.е. модемы не могут общаться между собой сразу, т. к. каждый раз они не будут знать свои адреса. Задача сервера - обменять модемы адресами.
|
|
|
|
|
Jul 25 2006, 13:44
|

Йа моск ;)
     
Группа: Модераторы
Сообщений: 4 345
Регистрация: 7-07-05
Из: Kharkiv-city
Пользователь №: 6 610

|
Цитата(Yuriy_Rus @ Jul 25 2006, 16:07)  Цитата(GetSmart @ Jul 25 2006, 15:50)  Передаётся одной СМС один IP. Модем, получивший его посылает туда IP-пакет. Таким образом другой модем (сервер) получает IP-адрес клиента.
Но вариант с СМС неидеален. Как я уже говорил.
Что-то то ли я не понимаю, то ли ты... Что ты подразумеваешь под "ТУДА"? Как один модем может стать сервером, а другой клиентом? Сервер он на то и нужен, что IP у него постоянный. А у GPRS модема IP выдаются каждый раз новый при подключении. Т.е. модемы не могут общаться между собой сразу, т. к. каждый раз они не будут знать свои адреса. Задача сервера - обменять модемы адресами. Протокол TCP/IP подразумевает, что на одной стороне создается серверный сокет (ожидающий соединение), а на другой стороне клиентский (который является инициатором коннекта). После того, как поднялся PPP и вы в своей софтине создаете серверный сокет, становится известен его IP, который достаточно послать клиенту, чтобы тот выполнил соединение с этим IP. Но мы забыли одну вещь - не факт, что серверный сокет, открытый на GPRS будет работать. Я имею в виду проблемы класса active/passive режим для FTP например. Т.е. IP-адрес может быть присвоен модему из диапазона внутренних адресов, а далее транслироваться через NAT.
--------------------
"Практика выше (теоретического) познания, ибо она имеет не только достоинство всеобщности, но и непосредственной действительности." - В.И. Ленин
|
|
|
|
|
Jul 25 2006, 13:54
|
Участник

Группа: Участник
Сообщений: 68
Регистрация: 24-07-06
Пользователь №: 19 039

|
Цитата(Rst7 @ Jul 25 2006, 17:44)  Цитата(Yuriy_Rus @ Jul 25 2006, 16:07)  Цитата(GetSmart @ Jul 25 2006, 15:50)  Передаётся одной СМС один IP. Модем, получивший его посылает туда IP-пакет. Таким образом другой модем (сервер) получает IP-адрес клиента.
Но вариант с СМС неидеален. Как я уже говорил.
Что-то то ли я не понимаю, то ли ты... Что ты подразумеваешь под "ТУДА"? Как один модем может стать сервером, а другой клиентом? Сервер он на то и нужен, что IP у него постоянный. А у GPRS модема IP выдаются каждый раз новый при подключении. Т.е. модемы не могут общаться между собой сразу, т. к. каждый раз они не будут знать свои адреса. Задача сервера - обменять модемы адресами. Протокол TCP/IP подразумевает, что на одной стороне создается серверный сокет (ожидающий соединение), а на другой стороне клиентский (который является инициатором коннекта). После того, как поднялся PPP и вы в своей софтине создаете серверный сокет, становится известен его IP, который достаточно послать клиенту, чтобы тот выполнил соединение с этим IP. Но мы забыли одну вещь - не факт, что серверный сокет, открытый на GPRS будет работать. Я имею в виду проблемы класса active/passive режим для FTP например. Т.е. IP-адрес может быть присвоен модему из диапазона внутренних адресов, а далее транслироваться через NAT. Как можно послать от "модема-сервера" его IP клиенту, если IP клиента неизвестен. И какими средствами C++ я могу узнать IP модема в момент, когда он приходит модему с Базовой станции? Или я опять чего-то не догоняю? Просветите "доступным" языком, пожалуйста.
|
|
|
|
|
Jul 25 2006, 18:00
|

Местный
  
Группа: Свой
Сообщений: 361
Регистрация: 18-04-05
Пользователь №: 4 258

|
Цитата(GetSmart @ Jul 25 2006, 18:38)  Я сам не знаю всех этих протоколов. Чисто на интуиции думаю. Подразумевается, что один из телефонов известен другому. Например все клиенты должны знать телефонный номер сервера. В вашей задаче можно считать, что один из телефонов - сервер, а другой (или даже другие) - клиент. Проблема только в том, что сервер должен отсылать СМС, а он-то и не знает номер клиента.
Ситуация: Один телефон регистрируется и получает IP. После он отправляет СМС с этим IP на сервер, телефонный номер которого он знает. Сервер после этого тоже регистрируется и уже через GPRS протокол (не знаю PPP или что-то ещё) отсылает на полученный им IP пакет данных. В этом пакете будет содержаться его собственный IP (сервера). Ну и далее они гоняют данные друг другу.
Если всё ПО писать под себя, то я бы вообще не стал вводить такое жёсткое разделение на клиент/сервер между двумя телефонами. Который первый инициировал соединение - тот и является клиентом. А изначально оба телефона могут быть равноценными. Да что тут мудрить, про dyndns уже писал. Самый верхний уровень TCP/IP, без скатываения вниз. У каждого учасника обмена будет свое имя, скажем terminal1.dyndns.org - это константа, не меняется, и известно каждому участнику соединения (terminal2.dyndns.org, terminal3.... и т.п.). Используя службу DNS (ну и DynDNS соответственно, черех обращение к зоне DynDNS) эти имена переворачиватся в динамические IP адреса (выданные на данные момент провайдером). Все друг друга опознали и разговаривают между собой по тохнологии клиент-сервер (over TCP или UDP).
|
|
|
|
|
Jul 26 2006, 05:43
|
Участник

Группа: Участник
Сообщений: 68
Регистрация: 24-07-06
Пользователь №: 19 039

|
Цитата(GetSmart @ Jul 25 2006, 18:38)  Я сам не знаю всех этих протоколов. Чисто на интуиции думаю. Подразумевается, что один из телефонов известен другому. Например все клиенты должны знать телефонный номер сервера. В вашей задаче можно считать, что один из телефонов - сервер, а другой (или даже другие) - клиент. Проблема только в том, что сервер должен отсылать СМС, а он-то и не знает номер клиента.
Ситуация: Один телефон регистрируется и получает IP. После он отправляет СМС с этим IP на сервер, телефонный номер которого он знает. Сервер после этого тоже регистрируется и уже через GPRS протокол (не знаю PPP или что-то ещё) отсылает на полученный им IP пакет данных. В этом пакете будет содержаться его собственный IP (сервера). Ну и далее они гоняют данные друг другу.
Если всё ПО писать под себя, то я бы вообще не стал вводить такое жёсткое разделение на клиент/сервер между двумя телефонами. Который первый инициировал соединение - тот и является клиентом. А изначально оба телефона могут быть равноценными. Как программно на С++ реализовать "выемку" GPRS модемом своего IP, как только он его получил? И как программно на С++ реализовать "отсыл" SMS на номер сервера? Или это всё уникальные функции, зависящие от типа(марки изготовителя) модема? Цитата(Chupakabra @ Jul 25 2006, 22:00)  Цитата(GetSmart @ Jul 25 2006, 18:38)  Я сам не знаю всех этих протоколов. Чисто на интуиции думаю. Подразумевается, что один из телефонов известен другому. Например все клиенты должны знать телефонный номер сервера. В вашей задаче можно считать, что один из телефонов - сервер, а другой (или даже другие) - клиент. Проблема только в том, что сервер должен отсылать СМС, а он-то и не знает номер клиента.
Ситуация: Один телефон регистрируется и получает IP. После он отправляет СМС с этим IP на сервер, телефонный номер которого он знает. Сервер после этого тоже регистрируется и уже через GPRS протокол (не знаю PPP или что-то ещё) отсылает на полученный им IP пакет данных. В этом пакете будет содержаться его собственный IP (сервера). Ну и далее они гоняют данные друг другу.
Если всё ПО писать под себя, то я бы вообще не стал вводить такое жёсткое разделение на клиент/сервер между двумя телефонами. Который первый инициировал соединение - тот и является клиентом. А изначально оба телефона могут быть равноценными.
Да что тут мудрить, про dyndns уже писал. Самый верхний уровень TCP/IP, без скатываения вниз. У каждого учасника обмена будет свое имя, скажем terminal1.dyndns.org - это константа, не меняется, и известно каждому участнику соединения (terminal2.dyndns.org, terminal3.... и т.п.). Используя службу DNS (ну и DynDNS соответственно, черех обращение к зоне DynDNS) эти имена переворачиватся в динамические IP адреса (выданные на данные момент провайдером). Все друг друга опознали и разговаривают между собой по тохнологии клиент-сервер (over TCP или UDP). Расскажи подробнее про DNS(DynDNS) как там, и что? Как реализовано "переворачивание" имён в динамические IP?
|
|
|
|
|
Jul 26 2006, 06:01
|
Участник

Группа: Участник
Сообщений: 68
Регистрация: 24-07-06
Пользователь №: 19 039

|
Цитата(GetSmart @ Jul 25 2006, 18:38)  Я сам не знаю всех этих протоколов. Чисто на интуиции думаю. Подразумевается, что один из телефонов известен другому. Например все клиенты должны знать телефонный номер сервера. В вашей задаче можно считать, что один из телефонов - сервер, а другой (или даже другие) - клиент. Проблема только в том, что сервер должен отсылать СМС, а он-то и не знает номер клиента.
Ситуация: Один телефон регистрируется и получает IP. После он отправляет СМС с этим IP на сервер, телефонный номер которого он знает. Сервер после этого тоже регистрируется и уже через GPRS протокол (не знаю PPP или что-то ещё) отсылает на полученный им IP пакет данных. В этом пакете будет содержаться его собственный IP (сервера). Ну и далее они гоняют данные друг другу.
Если всё ПО писать под себя, то я бы вообще не стал вводить такое жёсткое разделение на клиент/сервер между двумя телефонами. Который первый инициировал соединение - тот и является клиентом. А изначально оба телефона могут быть равноценными. Не, блин, я туту прикинул SMS может и через день прийти(раз на раз не приходится). Тут важна стабильность. Так что будет сервер в Интернете, через который будет по GPRS происходить обмен IP. Использование звонков и SMS лучше оставить.
Сообщение отредактировал Yuriy_Rus - Jul 26 2006, 06:04
|
|
|
|
|
  |
2 чел. читают эту тему (гостей: 2, скрытых пользователей: 0)
Пользователей: 0
|
|
|