реклама на сайте
подробности

 
 
8 страниц V  « < 3 4 5 6 7 > »   
Reply to this topicStart new topic
> Передача данных между 2 GPRS модемами, Уважаемые, помогите. Нужна прога на С++, которая реализует передачу да
zltigo
сообщение Jul 27 2006, 20:37
Сообщение #61


Гуру
******

Группа: Свой
Сообщений: 13 372
Регистрация: 27-11-04
Из: Riga, Latvia
Пользователь №: 1 244



Цитата(kuguar @ Jul 27 2006, 18:31) *
могу предложить следующий вариант - ты говорил что неудобно постоянно долбится на сервер за своей информацией.

Кто-нибудь ответит, зачем "долбится", если установив канал можно держать его "вечно" и переданная
информация "сама" прилетит. При развале - переустановить.
Или это какие-то Российские гримасы, типа платы за время GPRS соединения а не за трафик на такое поведение толкают?


--------------------
Feci, quod potui, faciant meliora potentes
Go to the top of the page
 
+Quote Post
Yuriy_Rus
сообщение Jul 28 2006, 04:54
Сообщение #62


Участник
*

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



Цитата(zltigo @ Jul 28 2006, 00:37) *
Цитата(kuguar @ Jul 27 2006, 18:31) *

могу предложить следующий вариант - ты говорил что неудобно постоянно долбится на сервер за своей информацией.

Кто-нибудь ответит, зачем "долбится", если установив канал можно держать его "вечно" и переданная
информация "сама" прилетит. При развале - переустановить.
Или это какие-то Российские гримасы, типа платы за время GPRS соединения а не за трафик на такое поведение толкают?


И это вариант хороший. Однако, программная реализация всех эти планов заставляет задуматься.
Держать на серваке несколько модемов.
Держать несколько "установленных каналов".
Организовывать пересыл сообщений по этой куче каналов.
Подскажи, пожалуйста, (хотя бы вообщем) как енто воплотить в жизнь программно.
Go to the top of the page
 
+Quote Post
zltigo
сообщение Jul 28 2006, 06:27
Сообщение #63


Гуру
******

Группа: Свой
Сообщений: 13 372
Регистрация: 27-11-04
Из: Riga, Latvia
Пользователь №: 1 244



Цитата(Yuriy_Rus @ Jul 28 2006, 07:54) *
Держать несколько "установленных каналов".
Организовывать пересыл сообщений по этой куче каналов.
Подскажи, пожалуйста, (хотя бы вообщем) как енто воплотить в жизнь программно.

Если речь иде не об embedded решении для сервера, то абсолютно любая
операционка Win-Linux-..... На которой запушена описанная ранее функция реализованная
на штатном интерфейсе BSD совместимых sockets.


--------------------
Feci, quod potui, faciant meliora potentes
Go to the top of the page
 
+Quote Post
Yuriy_Rus
сообщение Jul 28 2006, 06:37
Сообщение #64


Участник
*

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



Цитата(zltigo @ Jul 28 2006, 10:27) *
Цитата(Yuriy_Rus @ Jul 28 2006, 07:54) *

Держать несколько "установленных каналов".
Организовывать пересыл сообщений по этой куче каналов.
Подскажи, пожалуйста, (хотя бы вообщем) как енто воплотить в жизнь программно.

Если речь иде не об embedded решении для сервера, то абсолютно любая
операционка Win-Linux-..... На которой запушена описанная ранее функция реализованная
на штатном интерфейсе BSD совместимых sockets.


Нет сейчас хочу замутить сервак на Си в Винде (чтобы с алгоритмом разобраться, проблемы реализации порешать, проверить как оно всё работает, отладить и сделать как можно эффективнее). Я просто енто лучше всего знаю. А затем буду преобразовывать под BSD.

Сообщение отредактировал Yuriy_Rus - Jul 28 2006, 06:38
Go to the top of the page
 
+Quote Post
zltigo
сообщение Jul 28 2006, 06:44
Сообщение #65


Гуру
******

Группа: Свой
Сообщений: 13 372
Регистрация: 27-11-04
Из: Riga, Latvia
Пользователь №: 1 244



Цитата(Yuriy_Rus @ Jul 28 2006, 09:37) *
Нет сейчас хочу замутить сервак на Си в Винде (чтобы с алгоритмом разобраться, проблемы реализации порешать, проверить как оно всё работает, отладить и сделать как можно эффективнее). Я просто енто лучше всего знаю. А затем буду преобразовывать под BSD.

А разница при портировании будет минимальнейшая, особенно если WIN расширений sockets не пихать без всякой на то надобности.


--------------------
Feci, quod potui, faciant meliora potentes
Go to the top of the page
 
+Quote Post
Yuriy_Rus
сообщение Jul 28 2006, 07:25
Сообщение #66


Участник
*

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



Цитата(zltigo @ Jul 28 2006, 10:44) *
А разница при портировании будет минимальнейшая, особенно если WIN расширений sockets не пихать без всякой на то надобности.


Тем более тестовый вариант буду делать в Винде на Си.
Так что с реализацией как программно замутить несколько активных каналов?
Go to the top of the page
 
+Quote Post
zltigo
сообщение Jul 28 2006, 07:42
Сообщение #67


Гуру
******

Группа: Свой
Сообщений: 13 372
Регистрация: 27-11-04
Из: Riga, Latvia
Пользователь №: 1 244



Цитата(Yuriy_Rus @ Jul 28 2006, 10:25) *
Так что с реализацией как программно замутить несколько активных каналов?

??? А как один - понятно? Тогда сделайте это столько раз, сколько нужно...

Можете почитать для затравки исходники чего-либо простого, например, TFTP сервера.
Там уже будет соединение с выделенным портом, сообщение "чего хочу", достижение "консенсуса"
и по достижении оного выделение личного сокета для последующей работы. Останется только выбросить протокол пересылки файла заменив его пересылкой между подключившимися клиентами.


--------------------
Feci, quod potui, faciant meliora potentes
Go to the top of the page
 
+Quote Post
Yuriy_Rus
сообщение Jul 28 2006, 07:53
Сообщение #68


Участник
*

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



Цитата(zltigo @ Jul 28 2006, 11:42) *
Цитата(Yuriy_Rus @ Jul 28 2006, 10:25) *

Так что с реализацией как программно замутить несколько активных каналов?

??? А как один - понятно? Тогда сделайте это столько раз, сколько нужно...


Смысле в единичный момент времени будет только 1 канал между 2 девайсами?
Или можно сделать несколько активных каналов? Если да, то как?
Go to the top of the page
 
+Quote Post
zltigo
сообщение Jul 28 2006, 07:57
Сообщение #69


Гуру
******

Группа: Свой
Сообщений: 13 372
Регистрация: 27-11-04
Из: Riga, Latvia
Пользователь №: 1 244



Цитата(Yuriy_Rus @ Jul 28 2006, 10:53) *
Или можно сделать несколько активных каналов? Если да, то как?

ТАК-ЖЕ КАК И ОДИН, НО НЕСКОЛЬКО РАЗ.


--------------------
Feci, quod potui, faciant meliora potentes
Go to the top of the page
 
+Quote Post
Yuriy_Rus
сообщение Jul 28 2006, 08:24
Сообщение #70


Участник
*

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



bool cycle = 0; INT32 Soc;
//-----------------------------------------------------------------------------
void Connect()
{
int Soc1;
SOCKADDR_IN Sin1;
int Sin1len = sizeof(Sin1);
Soc1 = accept(Soc,(struct sockaddr*)&Sin1, &Sin1len); //функция извлечения будет висеть пока не получит клиента
if(Soc1 <= 0)
{
Application->MessageBox("Ошибка при извлечении из очереди запроса на соединение!", "Ошибка...", MB_OK+MB_ICONERROR);
}
else
{
char* Ipbuf = inet_ntoa(Sin1.sin_addr); //номер узла сети
AnsiString a2 = Ipbuf;
int b = htons(Sin1.sin_port); //номер порта
AnsiString Message = "Принято соединение с " + a2 + " " + IntToStr(cool.gif;

Application->MessageBox(Message.c_str(), "Сообщение...", MB_OK+MB_ICONINFORMATION);

BYTE RecvErrorBuffer[1];


char RecvBuffer[20];
while(recv(Soc1, RecvErrorBuffer, sizeof(RecvBuffer), 0)!= SOCKET_ERROR)
{
// printf("%c", RecvBuffer[0]);
recv(Soc1, RecvBuffer, sizeof(RecvBuffer), MSG_DONTROUTE);
}


// тут идентификация, обработка данных на отправку на другой девайс, сохранение и т. д.

closesocket(Soc1);
}
}
//-----------------------------------------------------------------------------
void __fastcall TfServer::B_WaitngModeClick(TObject *Sender)
{
//
Soc = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);
if(Soc == -1)
{
Application->MessageBox("Ошибка работы функции создания Socket!", "Ошибка...", MB_OK+MB_ICONERROR);
}
else
{
SOCKADDR_IN Sin;
Sin.sin_family = AF_INET;
Sin.sin_port = htons(80);
Sin.sin_addr.s_addr = INADDR_ANY; /

int Bnd;
Bnd = bind(Soc, (LPSOCKADDR)&Sin, sizeof(Sin));
//(LPSOCKADDR)&Sin - указывает на структуру данных, содержащую локальный адрес, приписываемый socket'у (для TCP/IP)
if(Bnd == -1)
{
Application->MessageBox("Ошибка при определении локального адреса канала связи со средой!", "Ошибка...", MB_OK+MB_ICONERROR);
}
else
{

int Lstn;
Lstn = listen(Soc, SOMAXCONN);
// SOMAXCONN - определяет максимальную длину очереди входящих запросов на установление связи
if(Lstn != 0)
{
Application->MessageBox("Ошибка при ожидании запроса!", "Ошибка...", MB_OK+MB_ICONERROR);
}
else
{
// do
// {
Connect();
// }while(cycle == 0);
}
}
}
}

//-------------------------------------------------------------------------------------------------------------------
Вот общий каркас сервака с одни рабочим сокетом, к которому все цепляются, делают своё "чёрное дело" и отцепляются.
Как он (сервер) будет держать несколько сокетов и несколько девайсов на них?
Как будет организовываться пересыл данных между девайсами на разных сокетах?
Как будет оганизовано пересыл между несколькими парами устройств? glare.gif
Go to the top of the page
 
+Quote Post
zltigo
сообщение Jul 28 2006, 08:38
Сообщение #71


Гуру
******

Группа: Свой
Сообщений: 13 372
Регистрация: 27-11-04
Из: Riga, Latvia
Пользователь №: 1 244



Цитата(Yuriy_Rus @ Jul 28 2006, 11:24) *
Вот общий каркас сервака с одни рабочим сокетом, к которому все цепляются, делают своё "чёрное
дело" и отцепляются.

Извините, не стал читать, или как принято сейчас выражаться "ниасалил" :-)
Цитата
Как он (сервер) будет держать несколько сокетов и несколько девайсов на них?

Может Вы не понимаете, что сокетов может быть открыто по числу ПОРТОВ на стороне сервера?
Или я тогда вообще НИЧЕГО не понимаю, чего Вы не понимаете :-(
Цитата
Как будет организовываться пересыл данных между девайсами на разных сокетах?

Вычитали содержимое из одного сокета и тупо запихнули его в другой.
Цитата
Как будет оганизовано пересыл между несколькими парами устройств? glare.gif

А чем "это" отличается от пересылки между одной парой?
Проблема схожая с открытием второго сокета?

Настойчиво повторяю:
Цитата
Можете почитать для затравки исходники чего-либо простого, например, TFTP сервера.
Там уже будет соединение с выделенным портом, сообщение "чего хочу", достижение "консенсуса"
и по достижении оного выделение личного сокета для последующей работы. Останется только выбросить протокол пересылки файла заменив его пересылкой между подключившимися клиентами.


--------------------
Feci, quod potui, faciant meliora potentes
Go to the top of the page
 
+Quote Post
Yuriy_Rus
сообщение Jul 28 2006, 09:08
Сообщение #72


Участник
*

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



[quote name='zltigo' date='Jul 28 2006, 12:38' post='138697']
[quote]
Можете почитать для затравки исходники чего-либо простого, например, TFTP сервера.
Там уже будет соединение с выделенным портом, сообщение "чего хочу", достижение "консенсуса"
и по достижении оного выделение личного сокета для последующей работы. Останется только выбросить протокол пересылки файла заменив его пересылкой между подключившимися клиентами.
[/quote]

Не подскажите где можно найти эти исходники на Си. wink.gif
Go to the top of the page
 
+Quote Post
zltigo
сообщение Jul 28 2006, 09:18
Сообщение #73


Гуру
******

Группа: Свой
Сообщений: 13 372
Регистрация: 27-11-04
Из: Riga, Latvia
Пользователь №: 1 244



Цитата(Yuriy_Rus @ Jul 28 2006, 12:08) *
Не подскажите где можно найти эти исходники на Си. wink.gif

Линуксовые приблуды - самый очевидный источник.
Самый простой поиск в интерненте по "TFTP server sources"...


--------------------
Feci, quod potui, faciant meliora potentes
Go to the top of the page
 
+Quote Post
bullit
сообщение Jul 28 2006, 18:36
Сообщение #74


пуля
****

Группа: Свой
Сообщений: 674
Регистрация: 10-05-06
Из: Уфа
Пользователь №: 16 959



to Yuriy_Rus

Может это тебе поможет: http://electronix.ru/forum/index.php?showtopic=18634 - второй пост, прикрепленный файл. Только там про реализацию, а не про программу, но тоже думаю поможет.
Go to the top of the page
 
+Quote Post
zltigo
сообщение Jul 30 2006, 17:42
Сообщение #75


Гуру
******

Группа: Свой
Сообщений: 13 372
Регистрация: 27-11-04
Из: Riga, Latvia
Пользователь №: 1 244



Цитата
Как ни странно Free Talks


Может не стои повторять ошибку?


--------------------
Feci, quod potui, faciant meliora potentes
Go to the top of the page
 
+Quote Post

8 страниц V  « < 3 4 5 6 7 > » 
Reply to this topicStart new topic
5 чел. читают эту тему (гостей: 5, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 22nd July 2025 - 22:14
Рейтинг@Mail.ru


Страница сгенерированна за 0.0141 секунд с 7
ELECTRONIX ©2004-2016