Форум программистов, компьютерный форум, киберфорум
C++: Сети
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.80/5: Рейтинг темы: голосов - 5, средняя оценка - 4.80
17 / 17 / 5
Регистрация: 19.09.2012
Сообщений: 216
1

Через что отправить данные в сеть?

12.06.2014, 23:04. Показов 933. Ответов 9
Метки нет (Все метки)

Всем привет, хотелось бы узнать способы отправки своих пакетов(не UDP и TCP) в сеть, без серверов под винду... сейчас использую WINPCAP, но к сожалению он не хочет работать под XE5 подскажите через какие библиотеки или может в стандартные функции направьте, а то застрял
__________________
Помощь в написании контрольных, курсовых и дипломных работ здесь
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
12.06.2014, 23:04
Ответы с готовыми решениями:

Отправить данные через curl
Всем привет! Пишу некий сервис. Клиент через curl отправляет на мой сервис пару файлов и набор...

Отправить данные через lwip
По поводу массива я поднимал уже тему https://www.cyberforum.ru/c/thread2262771.html, в общем, мне...

Отправить POST данные через httpS
Никак не получается сделать авторизацию по защищенному протоколу. ну вот для примера сайт mail ru...

Отправить данные на почту через форму
Коротко о проблеме гуглю уже 4 дня не могу понять как так как связать эту форму чтоб она...

9
Эксперт С++
2922 / 1271 / 114
Регистрация: 27.05.2008
Сообщений: 3,465
13.06.2014, 10:46 2
В случае совсем своего формата датаграмм - через raw socket. Гугл в помощь.
1
17 / 17 / 5
Регистрация: 19.09.2012
Сообщений: 216
13.06.2014, 12:08  [ТС] 3
CheshireCat, спасибо за наводку, но вот нашел только под линукс под линуксом все построено на pcap'e не подкинете пару ссылочек, был бы очень благодарен
0
Эксперт С++
2922 / 1271 / 114
Регистрация: 27.05.2008
Сообщений: 3,465
13.06.2014, 12:13 4
Лучший ответ Сообщение было отмечено Fobes как решение

Решение

Как-то странно ты искал.... Вот навскидку:

http://msdn.microsoft.com/en-u... 85%29.aspx
http://blagin.ru/raw-sokety-winsocket-c/
http://www.winsocketdotnetwork... et11d.html
1
17 / 17 / 5
Регистрация: 19.09.2012
Сообщений: 216
13.06.2014, 13:37  [ТС] 5
CheshireCat, благодарю ))) вот сам наткнулся на вторую))) спасибо за помощь, буду ляпать ^_^

Добавлено через 1 час 20 минут
CheshireCat, так, поразбирался в примере мальца, возник вопрос, так, для успокоения души)) с помощью этих сокетов можно отправить не IP протоколы ? мое дело на мак уровне(извиняюсь за описание, самоучка)... если быть точнее, то надо формировать iee802.11q поток
[]http://upload.wikimedia.org/wikipedia/commons/thumb/0/0e/Ethernet_802.1Q_Insert.svg/1506px-Ethernet_802.1Q_Insert.svg.png[/]
0
Эксперт С++
2922 / 1271 / 114
Регистрация: 27.05.2008
Сообщений: 3,465
13.06.2014, 17:56 6
Да, можно отправить не-IP, а вообще любой пакет (точнее, датаграмму). Сформировав его вручную.
1
17 / 17 / 5
Регистрация: 19.09.2012
Сообщений: 216
14.06.2014, 15:12  [ТС] 7
CheshireCat, по ходу с pcap'ом было все нормально, просто я дурак... Дабы не создавать новую тему, попробую тут написать... решил параллельно разобраться с классами, и вот что получилось...
файл "sender.cpp"... подключаю его к основной форме и по нажатию на кнопку создаю объект класса и получаю ошибку "Access violation at address 004035E8 in module 'project1.exe'. Read of address 00000000" С пкапом то было то же самое ведь, думал просто работать не хочет Помогите, что я не так делаю ?
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
#include "main.h"
#include <Winsock2.h>//Ws2_32.lib
#include <Windows.h>
#include <iostream.h>
 
class sender{
       public:
        sender(char *);                     //конструктор(название интерфейса;)
        ~sender(void);                      //деструктор
        void showError();
       private:
        LPVOID lpMsgBuf;
        WSADATA wsaData;
 
};
 
sender::~sender(void)
{
Form1->terminal->Lines->Add("Объект убит");
}
 
sender::sender(char *device)
{
if(WSAStartup(0x0202,&wsaData)){showError();}
        else
        {
                cout<<"WSAStartup - OK"<<endl;
                SOCKET sckt;
                sckt = socket(AF_INET,SOCK_RAW,IPPROTO_ICMP);
                if(sckt == INVALID_SOCKET){showError();}
                {
                        cout<<"Raw scoket is created"<<endl;
                        if(closesocket(sckt)== SOCKET_ERROR){showError();}
                }
 
                if(WSACleanup()){showError();}
                else{cout<<"WSACleanup - OK"<<endl;}
        }
}
 
void sender::showError()
{
    lpMsgBuf = NULL;
    FormatMessage(FORMAT_MESSAGE_ALLOCATE_BUFFER|FORMAT_MESSAGE_FROM_SYSTEM,NULL,WSAGetLastError(),
                MAKELANGID(LANG_NEUTRAL,SUBLANG_DEFAULT),(LPTSTR)&lpMsgBuf,0,NULL);
    Form1->terminal->Lines->Add((LPCTSTR)lpMsgBuf);
        LocalFree(lpMsgBuf);
}
Добавлено через 3 часа 33 минуты
Прошел отладчиком, понял что ошибки в строках с выводом на форму
C++
1
2
Form1->terminal->Lines->Add("Объект убит");
Form1->terminal->Lines->Add((LPCTSTR)lpMsgBuf);
Убрал, все заработало, почему я так делать не могу ? и как лучше сделать вывод в поле мемо на форме
0
Эксперт С++
2922 / 1271 / 114
Регистрация: 27.05.2008
Сообщений: 3,465
15.06.2014, 09:47 8
Че-т я ниччччего не понимаю! Вот это:
C++
1
Form1->terminal->Lines->Add("Объект убит");
означает, что ты используешь C++/CLI и .NET. Чем класс Socket не устраивает? Зачем нужно городить собственный велосипед?
0
17 / 17 / 5
Регистрация: 19.09.2012
Сообщений: 216
15.06.2014, 11:00  [ТС] 9
CheshireCat, это просто использовал для проверки, т.к. нужны уведомления о действиях, уведомления пишутся в Memo на другой форме. Столкнулся опять с тем же траблом, такая же ошибка с доступом вылетает, когда я теперь пытаюсь создать объект класса в другой форме, эх лучше бы я не начинал с этими классами >_< как я понял ошибки эти из-за не верных инклудов А велосипед нужен для того чтобы разобраться, да и все))
main.h:
C++
1
2
3
4
5
6
7
#include <vcl.h>
#include <tchar.h>
//мои
#include <pcap.h>
#include "mainForm.h"
#include "graph.h"
#include "interfaces.h"
sender.cpp:
C++
1
#include "main.h"
nterfaces.h:
C++
1
#include "sender.cpp"
Вот при таком раскладе объект не создается в форме "interface" с той же ошибкой доступа... я конечно понимаю что написан бред, но не пинайте, самоучка ведь и пишу программу чисто для себя) Где почитать можно про правильность инклудов ? или может тут подправить как ? "main.h" цепляется ко всем формам проекта и нужно чтобы объекты из "sender.cpp" создавались в каждой форме пробовал везде добавить #pragma once но все равно та же ошибка, либо у меня руки кривые ^_^
0
653 / 574 / 164
Регистрация: 13.12.2012
Сообщений: 2,124
17.06.2014, 11:48 10
Инклюды не причем, если были причем, у Вас бы не компилировалось, покажите как у Вас не получается создать
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
17.06.2014, 11:48

Не получается отправить данные через XMLHttpRequest
Никак не могу отправить данные на обработчик PHP с javasqript кода. Имею HTML файл с формой в...

Через ajax отправить данные в массиве
Здравствуйте, есть таблица, в которой выводятся позиции где $x - номер записи &lt;table&gt; &lt;tr...

Не получается отправить данные через несколько дней
Есть код if ($ row ! = 'immediate') { } else { mail ($ to, $ subject, $ message, $ headers); ...

Как отправить данные json через HttpURLConnection
Здравствуйте! Мне нужно работать с АПИ из приложения. Использую HttpURLConnection URL url =...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
10
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2022, CyberForum.ru