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

 
 
3 страниц V  < 1 2 3  
Reply to this topicStart new topic
> Прием пакетов по UDP (Visual Studio), Windows Form
smk
сообщение Jan 8 2013, 19:25
Сообщение #31


Гуру
******

Группа: Свой
Сообщений: 2 246
Регистрация: 17-03-05
Из: Украина, Киев
Пользователь №: 3 446



Цитата(Cosmojam @ Jan 8 2013, 05:48) *
Не совсем. Он существует для телефонов на Symbian (усилиями Нокиа) и для других мобильных платформ http://en.wikipedia.org/wiki/Qt_%28framework%29#Platforms. Но точно так же Qt существует для десктопных платформ. Изначально библиотека создавалась чтобы быть именно дескптоным кроссплатфоремнным гуем, потом разрослась.

Я только-только с Borland C++ пересел на VS2010 т.к. есть возможность бесплатного использования. Сразу пересаживаться еще на что-то - мне кажется так я ничего не сделаю. В любом случае спасибо за пдсказку. Обязательно присмотрюсь.


--------------------
Живи днем так, чтобы ночью ты спал спокойно.
Go to the top of the page
 
+Quote Post
smk
сообщение Jan 11 2013, 16:19
Сообщение #32


Гуру
******

Группа: Свой
Сообщений: 2 246
Регистрация: 17-03-05
Из: Украина, Киев
Пользователь №: 3 446



Цитата(Ken@t @ Dec 7 2012, 13:01) *
Во первых UDP использует простую модель передачи, без неявных "рукопожатий" для обеспечения надежности, упорядочивания или целостности данных. Таким образом, UDP предоставляет ненадежный сервис, и датаграммы могут прийти не по порядку, дублироваться или вовсе исчезнуть без следа.
Во вторых, проект с передатчиком и приёмником UDP прилагаю.
В третьих , когда ж прекратите с этим пропертарным раром баловаться.


Опробовал предложенный Вами проект. Все отлично работает. Однако возникли два вопроса. 1) В части wfListener я не нашел буфера (массива) в который поступают принятые данные и из которого можно было бы их брать; 2) нужно объединить в один wfListener и wfSender. Будет очень удобно иметь возможность как принмать данные, так и слать команды из одной формы.

Спасибо.


--------------------
Живи днем так, чтобы ночью ты спал спокойно.
Go to the top of the page
 
+Quote Post
SysRq
сообщение Jan 14 2013, 04:58
Сообщение #33


Чайник, 1 литр
****

Группа: Свой
Сообщений: 655
Регистрация: 17-05-06
Из: Moscow
Пользователь №: 17 168



CODE
SOCKET Socket;

volatile bool stop = false;

// Рабочий поток, разгребаем принятое...

UINT threadLAN(LPVOID foo)
{
fd_set fds;

struct timeval timeout;

while(!stop)
{
timeout.tv_sec = 0;
timeout.tv_usec = 100;

FD_ZERO(&fds);
FD_SET(pDlg->Socket, &fds);

int rc = select(sizeof(fds)*8, &fds, NULL, NULL, &timeout);
if(rc > 0)
{
char rbuf[1024];

SOCKADDR_IN clientaddr;

int len = sizeof(clientaddr);
int sz = recvfrom(pDlg->Socket, rbuf, 1024, 0, (sockaddr *) &clientaddr, &len);
if(sz == /* проверка на размер полученных данных */)
{
/* разгребаем данные в rbuf[] */
}
}
}

return 0;
}

// Инициализация...

bool ok = true;

WSADATA wd;
WSAStartup(1, &wd);

Socket = socket(PF_INET, SOCK_DGRAM, IPPROTO_UDP);
if(Socket == -1)
{
MessageBox(L"Error creating UDP socket");

ok = false;
}

SOCKADDR_IN UDPserveraddr;
memset(&UDPserveraddr,0, sizeof(UDPserveraddr));

UDPserveraddr.sin_family = AF_INET;
UDPserveraddr.sin_port = htons(5520 /* Номер порта */);
UDPserveraddr.sin_addr.s_addr = INADDR_ANY; /* Приём с любого адреса, в т.ч. широковещательные */

int len = sizeof(UDPserveraddr);

if(bind(Socket, (SOCKADDR *) &UDPserveraddr, sizeof(SOCKADDR_IN)) < 0)
{
MessageBox(L"Error binding UDP socket");

ok = false;
}

if(ok)
{
AfxBeginThread(threadLAN, NULL);
}
Go to the top of the page
 
+Quote Post
smk
сообщение Jan 15 2013, 17:23
Сообщение #34


Гуру
******

Группа: Свой
Сообщений: 2 246
Регистрация: 17-03-05
Из: Украина, Киев
Пользователь №: 3 446



Цитата(SysRq @ Jan 14 2013, 06:58) *

Спасибо. Посоветуйте что почитать про устройство программы Windows Form C# VS2010? Вот в какое место пустого проекта вставить предложенный Ваи код? Простите чайника...


--------------------
Живи днем так, чтобы ночью ты спал спокойно.
Go to the top of the page
 
+Quote Post
SysRq
сообщение Jan 16 2013, 07:51
Сообщение #35


Чайник, 1 литр
****

Группа: Свой
Сообщений: 655
Регистрация: 17-05-06
Из: Moscow
Пользователь №: 17 168



Цитата(SysRq @ Jan 14 2013, 06:58) *
Вот в какое место пустого проекта вставить предложенный Ваи код?
Оно не C#, оно C\C++ с лёгким налетом MFC (к сути отношения не имеет, но в коде упомянут).
Go to the top of the page
 
+Quote Post
smk
сообщение Jan 16 2013, 17:28
Сообщение #36


Гуру
******

Группа: Свой
Сообщений: 2 246
Регистрация: 17-03-05
Из: Украина, Киев
Пользователь №: 3 446



Мне бы в самой структуре проекта разобраться. Вот как разместить код чтобы можно было пользоваться функциями и глобальными переменными во всех файлах проекта? Уровень практически чайниковский...


--------------------
Живи днем так, чтобы ночью ты спал спокойно.
Go to the top of the page
 
+Quote Post
Manfred
сообщение Feb 1 2013, 19:36
Сообщение #37


Участник
*

Группа: Участник
Сообщений: 54
Регистрация: 29-08-07
Из: Красногорск
Пользователь №: 30 128



Мне было проще разобраться на примерах из http://www.winpcap.org/ и принемать с помощью их библиотек. Все они для Visual C++. Надо установить WinPCap и в его папках будут примеры.

+ пакеты удобно смотреть с помощью программы http://www.wireshark.org/

Принемаю UDP пакеты на скоростях около 600 Mbps, MTU 8kbyte, в обратную сторону идут команды управления. Пакеты компьютер иной раз теряет, но обычно несколько сот мегабайт за пару сек принемаю без потерь)) Matlab с такой задачей не справлялся

Сообщение отредактировал Manfred - Feb 1 2013, 19:40
Go to the top of the page
 
+Quote Post
smk
сообщение Feb 2 2013, 06:41
Сообщение #38


Гуру
******

Группа: Свой
Сообщений: 2 246
Регистрация: 17-03-05
Из: Украина, Киев
Пользователь №: 3 446



Обязательно посмотрю, спасибо! В целом на передложенном в начале примере разобрался, пока все работает. Сейчас больше вопросов общего характера по VS2010 C#.


--------------------
Живи днем так, чтобы ночью ты спал спокойно.
Go to the top of the page
 
+Quote Post
smk
сообщение Aug 11 2015, 14:50
Сообщение #39


Гуру
******

Группа: Свой
Сообщений: 2 246
Регистрация: 17-03-05
Из: Украина, Киев
Пользователь №: 3 446



Цитата(Ken@t @ Dec 8 2012, 10:09) *
Хм.
Наверно так ,
1. Установите VS2010 C# , возьмите книжку Рихтера, почитайте об CLR и С# в частности
2. Возмите любую книгу по программрованию Windows GUI, почитайте о событийной модели.
3. Пример рабочий передатчика и приёмника UDP пакетов , я вам дал.

Зы: Киев большой, найди рядом программиста он на пальцах вам обьяснит. Программирование , пока , не ваше.

Ух как быстро летит время. Да, Ваше решение хорошо работает и сейчас очень кстати. Программирование конечно у меня хромает, потому прошу помощи. Пытаюсь в Вашем Listener разбирать посылку в 64 байта. Работает. Но через время (около минуты) самопроизвольно закрывается. Успевает принять не более 2000 пакетов по 64 байта. Что не так? Исходник со своими "включениями" прилагаю. Спасибо.
Прикрепленный файл  UDP_Solution.zip ( 143.18 килобайт ) Кол-во скачиваний: 42


--------------------
Живи днем так, чтобы ночью ты спал спокойно.
Go to the top of the page
 
+Quote Post

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

 


RSS Текстовая версия Сейчас: 28th August 2025 - 18:16
Рейтинг@Mail.ru


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