Отправляет email-рассылки с помощью сервиса Sendsay
  Все выпуски  

RusFAQ.ru: Программирование на C / C++


Информационный Канал Subscribe.Ru


RusFAQ.ru: Программирование на C / C++

Выпуск № 267
от 26.05.2003, 22:40

Администратор:
Имя: Nick.Box
URL: Информационный ресурс
ICQ: 365124
[censored], [censored]
О рассылке:
Задано вопросов: 799
Отправлено ответов: 1803
Активность: 225.6 %
[Задать вопрос >>][Регистрация эксперта >>]
[Поиск в базе][Обсудить на форуме]


 Список экспертов, ответы которых опубликованы в данном выпуске

Ramzes
Статус: Профессиональный
Общий рейтинг: 128.11
URL: Microsoft homepage
[Подробней >>]
BOLT
Статус: Опытный
Общий рейтинг: 159.85
URL: В помощь начинающему программитсу Assembler, C/C++
[Подробней >>]
xiron
Статус: Опытный
Общий рейтинг: 114.03
[Подробней >>]
 
Avl2k
Статус: Опытный
Общий рейтинг: 125.59
[Подробней >>]


 Краткий перечень вопросов

Вопрос № 791. Здравствуйте, эксперты. Закиньте Рихтера, пожалуйста... (ответов: 2)
Вопрос № 792. Здравствуйте еще раз. Где найти подробное описание функций NTDLL.DLL. Если есть, скиньте на мыло... (ответов: 2)
Вопрос № 793. Здравствуйте, уважаемые Эксперты. Решил занятся програмированием сетевых приложений и появились нек... (ответов: 2)
Вопрос № 794. Здравствуйте эксперы. Такой вот вопрос. Имеется структрура: struct DATA { union VALUES { int... (ответов: 3)

Вопросов: 4, ответов: 9


 Вопрос № 791

Здравствуйте, эксперты. Закиньте Рихтера, пожалуйста



Вопрос отправлен: 23.05.2003, 02:30
Отправитель: Marouder (marouder@list.ru)

[Следующий вопрос >>] [Список вопросов]

Отвечает Ramzes

Добрый день, Marouder!
посмотри здесь
или тут

Ответ отправлен: 23.05.2003, 11:09
Отправитель: Ramzes


Отвечает BOLT

Доброе время суток, Marouder!
Это что еще такое?(Пацаны, закиньте Васю Пупкина :з)

Ответ отправлен: 24.05.2003, 12:05
Отправитель: BOLT


 Вопрос № 792

Здравствуйте еще раз. Где найти подробное описание функций NTDLL.DLL. Если есть, скиньте на мыло



Вопрос отправлен: 23.05.2003, 02:57
Отправитель: Marouder (marouder2003@hotbox.ru)

[Следующий вопрос >>] [Список вопросов]

Отвечает xiron

Доброе время суток, Marouder!
А шнурки вам не погладить ;)
Большинство из этих функций являются недокументированными, практически все ядро ос находится в нем.

Ответ отправлен: 23.05.2003, 11:15
Отправитель: xiron


Отвечает Ramzes

Доброе время суток, Marouder!
Описания ВСЕХ функций ты нигде не найдешь. В MSDN и NTDDK help есть описания некоторых функций, в частности функций с префиксами Rtl* и Zw*, и функций типа qsort, memcpy и.т.д. вот описание таких интересных функций типа NtCreateFile, NtCreateThread, Nt*, или LdrLoadDll, LdrUnloadDll ты нигде не найдешь, потому что они НЕ ДОКУМЕНТИРОВАНЫ.
пока

Ответ отправлен: 23.05.2003, 11:03
Отправитель: Ramzes


 Вопрос № 793

Здравствуйте, уважаемые Эксперты.
Решил занятся програмированием сетевых приложений и появились некоторые вопросы:
1) Как организовать передачу/прием ICMP сообщений?
2) Как, при написание сниффера, слушать канальный уровень?
3) Как сделать "впрыск" минуя канальный уровень?
Язык С++
Заранее благодарен.



Вопрос отправлен: 23.05.2003, 17:53
Отправитель: vdr

[Следующий вопрос >>] [Список вопросов]

Отвечает Ramzes

Доброе время суток, vdr!
1. Можно поставить сокет на сетевом уровне, и ручками создавать и посылать ICMP сообшения.
2. Я думаю придется писать драйвер.

Ответ отправлен: 26.05.2003, 13:01
Отправитель: Ramzes


Отвечает xiron

Приветствую Вас, vdr!
1) Можно при помощи RAW Sockets
Создаеш RAW Socket, меняеш его опции WSAIoctl функцией, поставив SIO_RCVALL. Теперь твой сокет будет ловить пакеты на сетевом уровне функцией recv. Можеш вручную создать свой ICMP message и функцией send послать ее.
2) Мне кажется чтобы перехватить пакеты на канальном уровне надо написать драйвер для сетевухи.
3) А что ты имееш ввиду под словом "впрыск"
P.S
SIO_RCVALL - дефайнута в Platform SDK winsock2.h, и ее нет в Platform SDK Visual C++.
Если нет под рукой Platform SDK то впиши в место
SIO_RCVALL 0x98000001 ;)
Удачи

Ответ отправлен: 26.05.2003, 15:16
Отправитель: xiron


 Вопрос № 794

Здравствуйте эксперы.
Такой вот вопрос. Имеется структрура:
struct DATA
{
union VALUES
{
int valInt;
float valFloat;
}value;
CString valString;
}
Как сделать так, чтобы valString была тоже в объединении, т.е. в одной области памяти, что
и все остальные данные. Я пробовал ее туда ставил, но компилятор выдает ошибки, типа
у valString есть конструктор копирования, как быть?
Компилятор VC++6.0
Заранее благодарен.



Вопрос отправлен: 23.05.2003, 19:39
Отправитель: Kydesnik (brothers@atnet.ru)

[Следующий вопрос >>] [Список вопросов]

Отвечает BOLT

Приветствую Вас, Kydesnik!
Э, брат!Так делать нельзя.
В объеденении могут быть только схожие переменные.Например: int, long, double - все они в памяти занимают двойное слово.Т.е. компилятор подрузумевает как одну переменную, которая может принять разные типы значений.
Ну, а теперь подумай: что класс String имеет с ними общего(int valInt;float valFloat;).Во-первых при объявлении объекта, сразу же выполняется контруктор, который выделяет память не там где находятся int valInt;float valFloat;Во-вторых объект типа String может занимать впамяти и 2 байта и 200!А в то время int valInt;float valFloat; занимаю только двойное слова.Т.е. нет совместимости.
Счастливо!

Ответ отправлен: 25.05.2003, 12:52
Отправитель: BOLT


Отвечает Avl2k

Приветствую Вас, Kydesnik!
По стандарту член union'а не может иметь нетривиального конструктора. Если нельзя, но очень хочется :), то можно так:
struct DATA
{
enum ValueType { typeInt, typeFloat, typeString } m_type;
DATA(const CString& s): m_type(typeString) { ConstStr(&s); }
~DATA() { if(m_type == typeString) _GetStr()->~CString(); }
DATA(const DATA& d): m_type(d.m_type)
{
switch(m_type) {
case typeString: ConstStr(d._GetStr()); break;
// остальные типы
}
}
DATA& operator = (const DATA& d)
{
if(&d != this) { this->~DATA(); new(this)DATA(d); }
return *this;
}
operator const CString&() const { return *_GetStr(); }
union VALUES
{
int valInt;
float valFloat;
char valString[sizeof(CString)];
} m_value;
private:
void ConstStr(const CString* s) {new(&m_value.valString)CString(*s);}
CString* _GetStr() const {return (CString*)m_value.valString; }
};
void f()
{
CString str = "12345566";
DATA d1(str);
DATA d2 = d1;
d1 = d2;
str = d1;
str = d2;
}
С уважением, Avl2k.

Ответ отправлен: 26.05.2003, 11:52
Отправитель: Avl2k


Отвечает Ramzes

Приветствую Вас, Kydesnik!
Надеюсь эксПЕРЫ это ты не нарочно :)))))
Честно говоря мне не понятно заяем тебе понадобилось засовывать CString в union вместе с int и float.
Можно поставить туда указатель на CString.

Ответ отправлен: 26.05.2003, 12:52
Отправитель: Ramzes



Форма отправки вопроса

Внимание!
Мы рекомендуем открывать рассылку в программе Internet Explorer 5.0+ или отправлять вопросы с сайта по адресу: http://rusfaq.ru/cgi-bin/Message.cgi.

(C) 2002-2003 Команда RusFAQ.ru.

 Персональные данные

Ваше имя:

Ваш e-mail:

Опубликовать мой e-mail в рассылке


 Вопрос и дополнение

Ваш вопрос:


Приложение (если необходимо):


Получить ответов:


 Выбор рассылки

Программисту
Assembler (41)
C / C++ (33)
Perl (6)
Builder / Delphi (17)
Pascal (29)
Basic / VBA (14)
Java / JavaScript (12)
PHP (8)
MySQL / MSSQL (5)
Пользователю
Windows 95/98/Me (40)
Windows NT/2000/XP (33)
"Железо" (29)
Поиск информации (14)
Администратору
Windows NT/2000/XP (20)
Linux / Unix (11)
Юристу
Гражданское право (5)
Семейное право (3)
Трудовое право (4)
КоАП (3)

Отправить вопрос всем экспертам выбранной рассылки.




Задать вопрос | Регистрация эксперта | Поиск в базе | Чат | Форумы | Новости
Проект экспертов RusFAQ.ru | Фотоальбом | Virus.RusFAQ.ru | Администрирование


Яндекс цитирования
© 2003 Россия, Москва. Авторское право: RusFAQ.ru

http://subscribe.ru/
E-mail: ask@subscribe.ru
Отписаться
Убрать рекламу

В избранное