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

 
 
> Прием пакетов по UDP (Visual Studio), Windows Form
smk
сообщение Dec 7 2012, 06:35
Сообщение #1


Гуру
******

Группа: Свой
Сообщений: 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


--------------------
Живи днем так, чтобы ночью ты спал спокойно.
Go to the top of the page
 
+Quote Post
3 страниц V   1 2 3 >  
Start new topic
Ответов (1 - 38)
Ken@t
сообщение Dec 7 2012, 11:01
Сообщение #2


Частый гость
**

Группа: Свой
Сообщений: 144
Регистрация: 5-08-05
Пользователь №: 7 382



Во первых UDP использует простую модель передачи, без неявных "рукопожатий" для обеспечения надежности, упорядочивания или целостности данных. Таким образом, UDP предоставляет ненадежный сервис, и датаграммы могут прийти не по порядку, дублироваться или вовсе исчезнуть без следа.
Во вторых, проект с передатчиком и приёмником UDP прилагаю.
В третьих , когда ж прекратите с этим пропертарным раром баловаться.
Прикрепленные файлы
Прикрепленный файл  UDP_Solution.zip ( 80.49 килобайт ) Кол-во скачиваний: 93
 


--------------------
Свет мой зеркальце, скажи, да всю правду расскажи я ль на свете всех тупее, бесполезней и пьянее?
Ты - придурок. Спору нет! Но живет на белом свете вот ТАКИХ еще две трети!
Go to the top of the page
 
+Quote Post
smk
сообщение Dec 7 2012, 13:50
Сообщение #3


Гуру
******

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



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

VS2008 говорит что приложение создано более новой версией и открывать отказывается. Можно что-то предпринять? Спасибо.


--------------------
Живи днем так, чтобы ночью ты спал спокойно.
Go to the top of the page
 
+Quote Post
Serg76
сообщение Dec 7 2012, 14:09
Сообщение #4


Профессионал
*****

Группа: Участник
Сообщений: 1 050
Регистрация: 4-04-07
Пользователь №: 26 775



Цитата(smk @ Dec 7 2012, 16:50) *
VS2008 говорит что приложение создано более новой версией и открывать отказывается. Можно что-то предпринять? Спасибо.

наверное установить VS2010 или воспользоваться конвертером VS2010 -> VS2008
Go to the top of the page
 
+Quote Post
Ken@t
сообщение Dec 7 2012, 14:52
Сообщение #5


Частый гость
**

Группа: Свой
Сообщений: 144
Регистрация: 5-08-05
Пользователь №: 7 382



Цитата(smk @ Dec 7 2012, 17:50) *
VS2008 говорит что приложение создано более новой версией и открывать отказывается. Можно что-то предпринять? Спасибо.

Откуда у вас 2008, уму не растяжимо ?
http://www.microsoft.com/visualstudio/rus/...io-2010-express скачайте и установите бесплатную версию Visual C# 2010 Express .


--------------------
Свет мой зеркальце, скажи, да всю правду расскажи я ль на свете всех тупее, бесполезней и пьянее?
Ты - придурок. Спору нет! Но живет на белом свете вот ТАКИХ еще две трети!
Go to the top of the page
 
+Quote Post
smk
сообщение Dec 7 2012, 16:06
Сообщение #6


Гуру
******

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



Цитата(Ken@t @ Dec 7 2012, 16:52) *
Откуда у вас 2008, уму не растяжимо ?
http://www.microsoft.com/visualstudio/rus/...io-2010-express скачайте и установите бесплатную версию Visual C# 2010 Express .

Качаю 2012 Express. C# ? Нет, под ХР таки 2010.


--------------------
Живи днем так, чтобы ночью ты спал спокойно.
Go to the top of the page
 
+Quote Post
smk
сообщение Dec 7 2012, 17:27
Сообщение #7


Гуру
******

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



Поставил С++. Не открывает. Может как-то по другому сориентируете как и что в пустой проект дописать?


--------------------
Живи днем так, чтобы ночью ты спал спокойно.
Go to the top of the page
 
+Quote Post
Serg76
сообщение Dec 7 2012, 17:49
Сообщение #8


Профессионал
*****

Группа: Участник
Сообщений: 1 050
Регистрация: 4-04-07
Пользователь №: 26 775



Цитата(smk @ Dec 7 2012, 20:27) *
Поставил С++. Не открывает. Может как-то по другому сориентируете как и что в пустой проект дописать?

у меня все открывает без проблем в 10-ой студии, винда 7-ка.

Цитата(smk @ Dec 7 2012, 20:27) *
Поставил С++. Не открывает. Может как-то по другому сориентируете как и что в пустой проект дописать?

Проект на С#, а не на плюсах

качать отсюда http://www.microsoft.com/visualstudio/rus/...#d-2010-express
Go to the top of the page
 
+Quote Post
smk
сообщение Dec 7 2012, 18:53
Сообщение #9


Гуру
******

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



Цитата(Serg76 @ Dec 7 2012, 19:49) *
у меня все открывает без проблем в 10-ой студии, винда 7-ка.


Проект на С#, а не на плюсах

качать отсюда http://www.microsoft.com/visualstudio/rus/...#d-2010-express

А под плюсы есть что?


Ладно. Поставлю вопрос так - можно ли что-то почитать уровня чайника чтобы по-быстрому разобраться? Куда и в какое место можно дописывать свой код в проект Windows Form? Ну вобщем помогите мне освоить прием-передачу по UDP кто чем может . Пока попробую разобраться в предложенном проекте. Спасибо.


--------------------
Живи днем так, чтобы ночью ты спал спокойно.
Go to the top of the page
 
+Quote Post
Serg76
сообщение Dec 7 2012, 19:34
Сообщение #10


Профессионал
*****

Группа: Участник
Сообщений: 1 050
Регистрация: 4-04-07
Пользователь №: 26 775



Цитата(smk @ Dec 7 2012, 21:53) *
А под плюсы есть что?

увы sad.gif, но в сети этого добра точно должно быть навалом
Go to the top of the page
 
+Quote Post
Ken@t
сообщение Dec 8 2012, 04:10
Сообщение #11


Частый гость
**

Группа: Свой
Сообщений: 144
Регистрация: 5-08-05
Пользователь №: 7 382



Цитата(smk @ Dec 7 2012, 21:27) *
Поставил С++. Не открывает. Может как-то по другому сориентируете как и что в пустой проект дописать?

Интересно, я чёрным по белому написал, что необходимо установить. Под управляемый код забудте о плюсах. Так как программист , вы ни какой, то на C# быстрее и обучитесь и сделаете что-то.



--------------------
Свет мой зеркальце, скажи, да всю правду расскажи я ль на свете всех тупее, бесполезней и пьянее?
Ты - придурок. Спору нет! Но живет на белом свете вот ТАКИХ еще две трети!
Go to the top of the page
 
+Quote Post
smk
сообщение Dec 8 2012, 05:43
Сообщение #12


Гуру
******

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



Подскажите по простому, в чем разница между сервером и клиентом UDP, в т.ч. с позиции программирования?


--------------------
Живи днем так, чтобы ночью ты спал спокойно.
Go to the top of the page
 
+Quote Post
Ken@t
сообщение Dec 8 2012, 06:03
Сообщение #13


Частый гость
**

Группа: Свой
Сообщений: 144
Регистрация: 5-08-05
Пользователь №: 7 382



Цитата(smk @ Dec 8 2012, 09:43) *
Подскажите по простому, в чем разница между сервером и клиентом UDP, в т.ч. с позиции программирования?

Всё смешалось в кучу , кони, люди.
Сервер : аппаратно - программный комплекс обеспечивающий обслуживание запросов клиентов, иными словами - сервер не иницирует запросов. Примером может служить службы серверов web, mail, time и т. д.

UDP - протокол пользовательски датаграмм , тоесть отправка сообщений от хоста к хосту IP сети без необходимости предварительного сообщения для установки специальных каналов передачи или путей данных.





--------------------
Свет мой зеркальце, скажи, да всю правду расскажи я ль на свете всех тупее, бесполезней и пьянее?
Ты - придурок. Спору нет! Но живет на белом свете вот ТАКИХ еще две трети!
Go to the top of the page
 
+Quote Post
smk
сообщение Dec 8 2012, 06:18
Сообщение #14


Гуру
******

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



Цитата(Ken@t @ Dec 8 2012, 08:03) *
Всё смешалось в кучу , кони, люди.
Сервер : аппаратно - программный комплекс обеспечивающий обслуживание запросов клиентов, иными словами - сервер не иницирует запросов. Примером может служить службы серверов web, mail, time и т. д.

UDP - протокол пользовательски датаграмм , тоесть отправка сообщений от хоста к хосту IP сети без необходимости предварительного сообщения для установки специальных каналов передачи или путей данных.

Ага... Спасибо. Я вот тут набросал кое что. Компилируется без ошибок. Теперь вопрос как прием организ0овать. Я так понимаю, что читать нужно в бесконечном цикле и при успешной вычитке складывать в буфер и обрабатывать. Так?

Собственно то что пока есть:
Код
// Test_Form.cpp: главный файл проекта.

#include "stdafx.h"

#include<stdio.h>
#include<string.h>
#include<winsock2.h>
#include<windows.h>

#define PORT  31337
#define SERVERADDR  "127.0.0.1"
#pragma comment (lib, "ws2_32.lib")

#include "Form1.h"

using namespace Test_Form;



[STAThreadAttribute]
int main(array<System::String ^> ^args)
{
    char buff [ 10*1024 ];
    //Подключение библиотеки
    if (WSAStartup ( 0x202, ( WSADATA  *) &buff [ 0 ] ))
       {
           return  -1;
       }
    //Создание сокета
    SOCKET  name_sock=socket ( AF_INET, SOCK_DGRAM, 0 );
    if ( name_sock==INVALID_SOCKET )
        {
          WSACleanup ( );
          return -1;
        }


    // Включение визуальных эффектов Windows XP до создания каких-либо элементов управления
    Application::EnableVisualStyles();
    Application::SetCompatibleTextRenderingDefault(false);

    // Создание главного окна и его запуск
    Application::Run(gcnew Form1());
    return 0;
}




--------------------
Живи днем так, чтобы ночью ты спал спокойно.
Go to the top of the page
 
+Quote Post
Ken@t
сообщение Dec 8 2012, 07:09
Сообщение #15


Частый гость
**

Группа: Свой
Сообщений: 144
Регистрация: 5-08-05
Пользователь №: 7 382



Хм.
Наверно так ,
1. Установите VS2010 C# , возьмите книжку Рихтера, почитайте об CLR и С# в частности
2. Возмите любую книгу по программрованию Windows GUI, почитайте о событийной модели.
3. Пример рабочий передатчика и приёмника UDP пакетов , я вам дал.

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


--------------------
Свет мой зеркальце, скажи, да всю правду расскажи я ль на свете всех тупее, бесполезней и пьянее?
Ты - придурок. Спору нет! Но живет на белом свете вот ТАКИХ еще две трети!
Go to the top of the page
 
+Quote Post
smk
сообщение Dec 8 2012, 07:14
Сообщение #16


Гуру
******

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



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

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

Все это правильно и здорово, но мне надо данные с прибора получать для анализа. Тонкости программирования это конечно интересно, однако обстоятельства времени на самообразование не оставляют. Пока нужно хоть как-то. Совершенствоваться буду потом. Уж простите...


--------------------
Живи днем так, чтобы ночью ты спал спокойно.
Go to the top of the page
 
+Quote Post
Ken@t
сообщение Dec 8 2012, 08:48
Сообщение #17


Частый гость
**

Группа: Свой
Сообщений: 144
Регистрация: 5-08-05
Пользователь №: 7 382



Цитата(smk @ Dec 8 2012, 11:14) *
Все это правильно и здорово, но мне надо данные с прибора получать для анализа. Тонкости программирования это конечно интересно, однако обстоятельства времени на самообразование не оставляют. Пока нужно хоть как-то. Совершенствоваться буду потом. Уж простите...

Мне плоско-параллельно, но вы не сможите решить эту задачу, ни как.


--------------------
Свет мой зеркальце, скажи, да всю правду расскажи я ль на свете всех тупее, бесполезней и пьянее?
Ты - придурок. Спору нет! Но живет на белом свете вот ТАКИХ еще две трети!
Go to the top of the page
 
+Quote Post
smk
сообщение Dec 8 2012, 09:47
Сообщение #18


Гуру
******

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



Цитата(Ken@t @ Dec 8 2012, 10:48) *
Мне плоско-параллельно, но вы не сможите решить эту задачу, ни как.

Собственно потому и прошу помощи.


--------------------
Живи днем так, чтобы ночью ты спал спокойно.
Go to the top of the page
 
+Quote Post
Ken@t
сообщение Dec 8 2012, 15:02
Сообщение #19


Частый гость
**

Группа: Свой
Сообщений: 144
Регистрация: 5-08-05
Пользователь №: 7 382



Монстр на managed C++.

на шарпе давал , что было проще, удобней, нативней.


Прикрепленные файлы
Прикрепленный файл  UDP_Solution.zip ( 1.61 мегабайт ) Кол-во скачиваний: 47
 


--------------------
Свет мой зеркальце, скажи, да всю правду расскажи я ль на свете всех тупее, бесполезней и пьянее?
Ты - придурок. Спору нет! Но живет на белом свете вот ТАКИХ еще две трети!
Go to the top of the page
 
+Quote Post
smk
сообщение Dec 9 2012, 10:17
Сообщение #20


Гуру
******

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



Цитата(Ken@t @ Dec 8 2012, 17:02) *
Монстр на managed C++.

на шарпе давал , что было проще, удобней, нативней.

Спаисбо. Это то что нужно, только не получается на форму UDP Receiver добавить своих кнопок, графиков и т.п. Это где галку снять? Да и данные хотелось бы видеть в виде массива из 64 байт, пытаюсь понять как это сделать. Но и за это Вам огромное спасибо.


--------------------
Живи днем так, чтобы ночью ты спал спокойно.
Go to the top of the page
 
+Quote Post
Ken@t
сообщение Dec 9 2012, 12:14
Сообщение #21


Частый гость
**

Группа: Свой
Сообщений: 144
Регистрация: 5-08-05
Пользователь №: 7 382



Цитата(smk @ Dec 9 2012, 14:17) *
Спаисбо. Это то что нужно, только не получается на форму UDP Receiver добавить своих кнопок, графиков и т.п. Это где галку снять? Да и данные хотелось бы видеть в виде массива из 64 байт, пытаюсь понять как это сделать. Но и за это Вам огромное спасибо.


ТЗ в студию. И это, поставьте себе VS2010 express C#.


--------------------
Свет мой зеркальце, скажи, да всю правду расскажи я ль на свете всех тупее, бесполезней и пьянее?
Ты - придурок. Спору нет! Но живет на белом свете вот ТАКИХ еще две трети!
Go to the top of the page
 
+Quote Post
bolden
сообщение Dec 9 2012, 13:19
Сообщение #22


Частый гость
**

Группа: Участник
Сообщений: 100
Регистрация: 26-12-10
Из: Санкт-Петербург
Пользователь №: 61 884



По поводу клиента и сервера TCP и UDP, можно прочитать у Криса Касперски в статье "Самоучитель игры на WinSock".
На С, без Windows Forms, зато всё просто и доступно, есть примеры.
Для начала можно данные и в консоли посмотреть, а потом привязывайте это к чему угодно, в том числе и к Forms.
Go to the top of the page
 
+Quote Post
smk
сообщение Dec 10 2012, 06:17
Сообщение #23


Гуру
******

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



Цитата(Ken@t @ Dec 9 2012, 14:14) *
ТЗ в студию. И это, поставьте себе VS2010 express C#.

Ставлю. ТЗ такое. Прибор шлет 64 байта данных. Часть пока не задействованы, но остальные представляют собой разбитые на байты unsigned int и unsigned short. Нужно их "склеивать" и писать в файл, параллельно обрабатывая и выводя в виде графиков и промежуточных результатов. Ну примерно так... Обработку я постараюсь осилить самостоятельно, но для быстроты могут понадобиться консультации по некоторым вопросам, напримет как писать файл с именем, заданным "на лету". Ну вот я скажем хочу сохранить сессию которая чем-то для меня примечательна. Я задаю имя файла и командую "писать". Программа должна писать скажем кусками по 10 Мбайт инкрементируя имя файла. В последствии читать. Далее понадобится возможность коммандовать прибору некоторые комманды, скажем отправляя тот же блок данных из 64 байт. Ну пока примерно так.
Вообще мне Windows Form за тем и нужен чтобы проще было всякие графики и таблички делать.


--------------------
Живи днем так, чтобы ночью ты спал спокойно.
Go to the top of the page
 
+Quote Post
Ken@t
сообщение Dec 10 2012, 09:00
Сообщение #24


Частый гость
**

Группа: Свой
Сообщений: 144
Регистрация: 5-08-05
Пользователь №: 7 382



Цитата(smk @ Dec 10 2012, 10:17) *
Ставлю. ТЗ такое. Прибор шлет 64 байта данных. Часть пока не задействованы, но остальные представляют собой разбитые на байты unsigned int и unsigned short. Нужно их "склеивать" и писать в файл, параллельно обрабатывая и выводя в виде графиков и промежуточных результатов. Ну примерно так... Обработку я постараюсь осилить самостоятельно, но для быстроты могут понадобиться консультации по некоторым вопросам, напримет как писать файл с именем, заданным "на лету". Ну вот я скажем хочу сохранить сессию которая чем-то для меня примечательна. Я задаю имя файла и командую "писать". Программа должна писать скажем кусками по 10 Мбайт инкрементируя имя файла. В последствии читать. Далее понадобится возможность коммандовать прибору некоторые комманды, скажем отправляя тот же блок данных из 64 байт. Ну пока примерно так.
Вообще мне Windows Form за тем и нужен чтобы проще было всякие графики и таблички делать.


Это не ТЗ, даже не сочинение по свободной форме, это херь полная.
Структура пакета ,
uint и ushort размерность в битах , big или little endian, бинарное представление образца данных ?
Какие графики, ординаты, масштабирование ?
промежуточные результаты - результаты чего ?



--------------------
Свет мой зеркальце, скажи, да всю правду расскажи я ль на свете всех тупее, бесполезней и пьянее?
Ты - придурок. Спору нет! Но живет на белом свете вот ТАКИХ еще две трети!
Go to the top of the page
 
+Quote Post
smk
сообщение Dec 12 2012, 07:30
Сообщение #25


Гуру
******

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



Не могу побороть ситуацию Как ни ставил - не становится 2010 С#. Наверно прийдется винду переставлять. Дома встало все хорошо, а на работе вот такое сообщение при попытке запуска:
Прикрепленное изображение


--------------------
Живи днем так, чтобы ночью ты спал спокойно.
Go to the top of the page
 
+Quote Post
Ken@t
сообщение Dec 15 2012, 07:58
Сообщение #26


Частый гость
**

Группа: Свой
Сообщений: 144
Регистрация: 5-08-05
Пользователь №: 7 382



Структура пакета ,
uint и ushort размерность в битах , big или little endian, бинарное представление образца данных ?


--------------------
Свет мой зеркальце, скажи, да всю правду расскажи я ль на свете всех тупее, бесполезней и пьянее?
Ты - придурок. Спору нет! Но живет на белом свете вот ТАКИХ еще две трети!
Go to the top of the page
 
+Quote Post
smk
сообщение Jan 3 2013, 18:07
Сообщение #27


Гуру
******

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



Прошу извинения за задержку. Наконец-то поставил VS2010 express C#. Пришлось перенести работы на позже и выйти из ситуации другими средствами т.к. явно уже не успевал. Теперь время начинает появляться. Можем понемногу продолжать поскольку однозначно нужно и важно.

В отношении ТЗ. У меня есть модуль http://www.wiznet.co.kr/Sub_Modules/en/pro...mp;pid=1023#tab На нем и будем тренироваться пока прибора в руках нет. Модуль можно сконфигурировать для работы по UDP, настроить адреса, маску подсети и т.п., для этого к модулю прилагается специальная утилита. Это я сделаю самостоятельно. Реальный пакет занимает 64 байта данных без учета обертки UDP. Модуль под управлением компьютера или контроллера вполне способен этот пакет смоделировать. Сначала задача такая: модуль передает 64 байта по UDP - компьютер принимает и наоборот.

Спасибо.

p.s. На счет C# пожалуй Вы были правы. Как-то оно действительно яснее хотя пока руками не научусь так и буду в полутумане.


--------------------
Живи днем так, чтобы ночью ты спал спокойно.
Go to the top of the page
 
+Quote Post
Cosmojam
сообщение Jan 5 2013, 13:09
Сообщение #28


Местный
***

Группа: Свой
Сообщений: 311
Регистрация: 12-01-11
Из: Калининград (Koenigsberg)
Пользователь №: 62 182



Простите великодушно за провокацию холивара, но всё же откуда требование WinForms и MSVS? На сокетах приём-отправка UDP в одном потоке займёт 30 строк на Си вместе с инклюдами. Если нужен GUI - есть Qt, в нём для работы с сетью тоже есть классы и отличный механизм сигналов-слотов для асинхронного i/o. Можно ненавидеть C++ и тогда есть Java. Но откуда появляется желание гвоздями приковывать себя к одной платформе и одной технологии одной компании?
В аттаче простейший пример на C++ с Qt на приём и отправку текста по UDP. Установите Qt SDK http://www.developer.nokia.com/info/sw.nok...5f8/Qt_SDK.html, откройте проект в QtCreator и запустите его. Проще не придумать и это всё одинаково работает на всех поддерживаемых платформах и исходники самой библиотеки открыты.
Прикрепленные файлы
Прикрепленный файл  udptest.zip ( 2.98 килобайт ) Кол-во скачиваний: 36
 


--------------------
typedef enum { no, yes, maybe } bool; | блог тут
Go to the top of the page
 
+Quote Post
smk
сообщение Jan 7 2013, 19:19
Сообщение #29


Гуру
******

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



Цитата(Cosmojam @ Jan 5 2013, 15:09) *
Простите великодушно за провокацию холивара, но всё же откуда требование WinForms и MSVS? На сокетах приём-отправка UDP в одном потоке займёт 30 строк на Си вместе с инклюдами. Если нужен GUI - есть Qt, в нём для работы с сетью тоже есть классы и отличный механизм сигналов-слотов для асинхронного i/o. Можно ненавидеть C++ и тогда есть Java. Но откуда появляется желание гвоздями приковывать себя к одной платформе и одной технологии одной компании?
В аттаче простейший пример на C++ с Qt на приём и отправку текста по UDP. Установите Qt SDK http://www.developer.nokia.com/info/sw.nok...5f8/Qt_SDK.html, откройте проект в QtCreator и запустите его. Проще не придумать и это всё одинаково работает на всех поддерживаемых платформах и исходники самой библиотеки открыты.

Я могу ошибаться, но это целевой продукт под телефонные приложения?


--------------------
Живи днем так, чтобы ночью ты спал спокойно.
Go to the top of the page
 
+Quote Post
Cosmojam
сообщение Jan 8 2013, 03:48
Сообщение #30


Местный
***

Группа: Свой
Сообщений: 311
Регистрация: 12-01-11
Из: Калининград (Koenigsberg)
Пользователь №: 62 182



Цитата(smk @ Jan 7 2013, 22:19) *
Я могу ошибаться, но это целевой продукт под телефонные приложения?

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


--------------------
typedef enum { no, yes, maybe } bool; | блог тут
Go to the top of the page
 
+Quote Post
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 Текстовая версия Сейчас: 29th July 2025 - 01:04
Рейтинг@Mail.ru


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