smk 0 8 января, 2013 Опубликовано 8 января, 2013 · Жалоба Не совсем. Он существует для телефонов на Symbian (усилиями Нокиа) и для других мобильных платформ http://en.wikipedia.org/wiki/Qt_%28framework%29#Platforms. Но точно так же Qt существует для десктопных платформ. Изначально библиотека создавалась чтобы быть именно дескптоным кроссплатфоремнным гуем, потом разрослась. Я только-только с Borland C++ пересел на VS2010 т.к. есть возможность бесплатного использования. Сразу пересаживаться еще на что-то - мне кажется так я ничего не сделаю. В любом случае спасибо за пдсказку. Обязательно присмотрюсь. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
smk 0 11 января, 2013 Опубликовано 11 января, 2013 · Жалоба Во первых UDP использует простую модель передачи, без неявных "рукопожатий" для обеспечения надежности, упорядочивания или целостности данных. Таким образом, UDP предоставляет ненадежный сервис, и датаграммы могут прийти не по порядку, дублироваться или вовсе исчезнуть без следа. Во вторых, проект с передатчиком и приёмником UDP прилагаю. В третьих , когда ж прекратите с этим пропертарным раром баловаться. Опробовал предложенный Вами проект. Все отлично работает. Однако возникли два вопроса. 1) В части wfListener я не нашел буфера (массива) в который поступают принятые данные и из которого можно было бы их брать; 2) нужно объединить в один wfListener и wfSender. Будет очень удобно иметь возможность как принмать данные, так и слать команды из одной формы. Спасибо. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
NullPointer 0 14 января, 2013 Опубликовано 14 января, 2013 · Жалоба 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 0 15 января, 2013 Опубликовано 15 января, 2013 · Жалоба Спасибо. Посоветуйте что почитать про устройство программы Windows Form C# VS2010? Вот в какое место пустого проекта вставить предложенный Ваи код? Простите чайника... Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
NullPointer 0 16 января, 2013 Опубликовано 16 января, 2013 · Жалоба Вот в какое место пустого проекта вставить предложенный Ваи код?Оно не C#, оно C\C++ с лёгким налетом MFC (к сути отношения не имеет, но в коде упомянут). Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
smk 0 16 января, 2013 Опубликовано 16 января, 2013 · Жалоба Мне бы в самой структуре проекта разобраться. Вот как разместить код чтобы можно было пользоваться функциями и глобальными переменными во всех файлах проекта? Уровень практически чайниковский... Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Manfred 0 1 февраля, 2013 Опубликовано 1 февраля, 2013 (изменено) · Жалоба Мне было проще разобраться на примерах из http://www.winpcap.org/ и принемать с помощью их библиотек. Все они для Visual C++. Надо установить WinPCap и в его папках будут примеры. + пакеты удобно смотреть с помощью программы http://www.wireshark.org/ Принемаю UDP пакеты на скоростях около 600 Mbps, MTU 8kbyte, в обратную сторону идут команды управления. Пакеты компьютер иной раз теряет, но обычно несколько сот мегабайт за пару сек принемаю без потерь)) Matlab с такой задачей не справлялся Изменено 1 февраля, 2013 пользователем Manfred Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
smk 0 2 февраля, 2013 Опубликовано 2 февраля, 2013 · Жалоба Обязательно посмотрю, спасибо! В целом на передложенном в начале примере разобрался, пока все работает. Сейчас больше вопросов общего характера по VS2010 C#. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
smk 0 11 августа, 2015 Опубликовано 11 августа, 2015 · Жалоба Хм. Наверно так , 1. Установите VS2010 C# , возьмите книжку Рихтера, почитайте об CLR и С# в частности 2. Возмите любую книгу по программрованию Windows GUI, почитайте о событийной модели. 3. Пример рабочий передатчика и приёмника UDP пакетов , я вам дал. Зы: Киев большой, найди рядом программиста он на пальцах вам обьяснит. Программирование , пока , не ваше. Ух как быстро летит время. Да, Ваше решение хорошо работает и сейчас очень кстати. Программирование конечно у меня хромает, потому прошу помощи. Пытаюсь в Вашем Listener разбирать посылку в 64 байта. Работает. Но через время (около минуты) самопроизвольно закрывается. Успевает принять не более 2000 пакетов по 64 байта. Что не так? Исходник со своими "включениями" прилагаю. Спасибо. UDP_Solution.zip Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться