|
Прием пакетов по UDP (Visual Studio), Windows Form |
|
|
|
Dec 7 2012, 06:35
|
Гуру
     
Группа: Свой
Сообщений: 2 246
Регистрация: 17-03-05
Из: Украина, Киев
Пользователь №: 3 446

|
Поскольку программист я не очень то опытный, прошу помощи и подсказки у знающих людей. Очень надеюсь, что это не будет трудно. Мне для анализа некоторых процессов нужно принимать от прибора по UDP пакеты с 64 байтами данных. В дальнейшем их нужно обрабатывать, но это я уже осилю сам. Мне сейчас очень необходима помощь собственно в организации приема этих пакетов. Они идут с периодичностью 35 мС и пропускать нельзя ни одного. Помогите интегрировать в пустой проект Visual Studio 2008 необходимый код для приема. Ну тоесть правильно открыть сокет - адрес 192.168.1.100 порт 5000. Нужно чтобы данные ложились в массив из 64 элементов unsigned char. Ну и как-то вызывался обработчик после каждого принятого пакета. Я пересмотрел кучу примеров, но так и не нашел ни одного интегрированного в Windows Form App. Очень прошу помочь сделать рыбу для приема, а дальше я сам. Пример пустого проекта, в который нужно встроить прием, прилагаю. Огромное Спасибо!
My_UDP.rar ( 1.88 мегабайт )
Кол-во скачиваний: 188
--------------------
Живи днем так, чтобы ночью ты спал спокойно.
|
|
|
|
|
 |
Ответов
|
Jan 14 2013, 04:58
|

Чайник, 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); }
|
|
|
|
Сообщений в этой теме
smk Прием пакетов по UDP (Visual Studio) Dec 7 2012, 06:35 Ken@t Во первых UDP использует простую модель передачи, ... Dec 7 2012, 11:01 smk Цитата(Ken@t @ Dec 7 2012, 14:01) Во перв... Dec 7 2012, 13:50  Serg76 Цитата(smk @ Dec 7 2012, 16:50) VS2008 го... Dec 7 2012, 14:09  Ken@t Цитата(smk @ Dec 7 2012, 17:50) VS2008 го... Dec 7 2012, 14:52   smk Цитата(Ken@t @ Dec 7 2012, 16:52) Откуда ... Dec 7 2012, 16:06 smk Цитата(Ken@t @ Dec 7 2012, 13:01) Во перв... Jan 11 2013, 16:19 smk Поставил С++. Не открывает. Может как-то по другом... Dec 7 2012, 17:27 Serg76 Цитата(smk @ Dec 7 2012, 20:27) Поставил ... Dec 7 2012, 17:49  smk Цитата(Serg76 @ Dec 7 2012, 19:49) у меня... Dec 7 2012, 18:53   Serg76 Цитата(smk @ Dec 7 2012, 21:53) А под плю... Dec 7 2012, 19:34 Ken@t Цитата(smk @ Dec 7 2012, 21:27) Поставил ... Dec 8 2012, 04:10 smk Подскажите по простому, в чем разница между сервер... Dec 8 2012, 05:43 Ken@t Цитата(smk @ Dec 8 2012, 09:43) Подскажит... Dec 8 2012, 06:03  smk Цитата(Ken@t @ Dec 8 2012, 08:03) Всё сме... Dec 8 2012, 06:18   Ken@t Хм.
Наверно так ,
1. Установите VS2010 C# , возь... Dec 8 2012, 07:09    smk Цитата(Ken@t @ Dec 8 2012, 09:09) Хм.
На... Dec 8 2012, 07:14     Ken@t Цитата(smk @ Dec 8 2012, 11:14) Все это п... Dec 8 2012, 08:48      smk Цитата(Ken@t @ Dec 8 2012, 10:48) Мне пло... Dec 8 2012, 09:47       Ken@t Монстр на managed C++.
на шарпе давал , что было ... Dec 8 2012, 15:02        smk Цитата(Ken@t @ Dec 8 2012, 17:02) Монстр ... Dec 9 2012, 10:17         Ken@t Цитата(smk @ Dec 9 2012, 14:17) Спаисбо. ... Dec 9 2012, 12:14          smk Цитата(Ken@t @ Dec 9 2012, 14:14) ТЗ в ст... Dec 10 2012, 06:17           Ken@t Цитата(smk @ Dec 10 2012, 10:17) Ставлю. ... Dec 10 2012, 09:00    smk Цитата(Ken@t @ Dec 8 2012, 10:09) Хм.
На... Aug 11 2015, 14:50 bolden По поводу клиента и сервера TCP и UDP, можно прочи... Dec 9 2012, 13:19 smk Не могу побороть ситуацию Как ни ставил - не стано... Dec 12 2012, 07:30 Ken@t Структура пакета ,
uint и ushort размерность в би... Dec 15 2012, 07:58 smk Прошу извинения за задержку. Наконец-то поставил ... Jan 3 2013, 18:07 Cosmojam Простите великодушно за провокацию холивара, но вс... Jan 5 2013, 13:09 smk Цитата(Cosmojam @ Jan 5 2013, 15:09) Прос... Jan 7 2013, 19:19  Cosmojam Цитата(smk @ Jan 7 2013, 22:19) Я могу ош... Jan 8 2013, 03:48   smk Цитата(Cosmojam @ Jan 8 2013, 05:48) Не с... Jan 8 2013, 19:25 smk Мне бы в самой структуре проекта разобраться. Вот ... Jan 16 2013, 17:28 Manfred Мне было проще разобраться на примерах из http://w... Feb 1 2013, 19:36 smk Обязательно посмотрю, спасибо! В целом на пере... Feb 2 2013, 06:41
2 чел. читают эту тему (гостей: 2, скрытых пользователей: 0)
Пользователей: 0
|
|
|