Форум программистов «Весельчак У»
  *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

  • Рекомендуем проверить настройки временной зоны в вашем профиле (страница "Внешний вид форума", пункт "Часовой пояс:").
  • У нас больше нет рассылок. Если вам приходят письма от наших бывших рассылок mail.ru и subscribe.ru, то знайте, что это не мы рассылаем.
   Начало  
Наши сайты
Помощь Поиск Календарь Почта Войти Регистрация  
 
Страниц: [1]   Вниз
  Печать  
Автор Тема: Использование Raw socket'a  (Прочитано 7179 раз)
0 Пользователей и 2 Гостей смотрят эту тему.
IgnisFatuus
Постоялец

ru
Offline Offline

« : 29-07-2014 12:11 » new

Добрый день!

Есть проблема - хочу с помощью raw socket отправлять TCP/IP пакет. То есть у меня есть ГОТОВЫЙ буфер с байтами в котором все TCP/IP зоголовки и пр пр.
Исходники:

Код: (C++)

void send_ip(void* data, u16_t len) {
std::cout << "begine  of send_ip" << std::endl;
int s;
struct sockaddr_in dst_addr;
if ((s = socket(AF_INET, SOCK_RAW, IPPROTO_RAW)) < 0) {
  perror("error:");
 exit(EXIT_FAILURE);
}
const int hdrincl = 1;
setsockopt(s, IPPROTO_IP, IP_HDRINCL, &hdrincl, sizeof(hdrincl));

dst_addr.sin_family = AF_INET;
dst_addr.sin_port = 6667;
inet_aton("172.17.9.71", &dst_addr.sin_addr);
std::cout << "before send in  send_ip, len = " << (u16_t)len << std::endl;

if (sendto(s, data, len, 0,
  (struct sockaddr *)&dst_addr, (socklen_t)sizeof(dst_addr)) < 0) {
perror("sendto ERROR :");

    }
    else{

  }

}
 



Выхлоп в консоль:

sendto ERROR :: Invalid argument


Меняем

Код: (C++)
     s = socket(AF_INET, SOCK_RAW, IPPROTO_TCP)

И коментим

Код: (C++)
setsockopt(s, IPPROTO_IP, IP_HDRINCL, &hdrincl, sizeof(hdrincl));

Отсылка проходит нормально, НО

в Wireshark я вижу


110539  1059.796163000  172.17.9.210    172.17.9.71 TCP 78  65535 > 65535 [SYN, RST,     
Reserved] Seq=0 Win=1, bogus TCP header length (0, must be at least 20)


Соответственно, сообщение до сервера не доходит . Что я делаю не так?
Записан
LemmonRus
Помогающий

ru
Offline Offline
В правильно заданном вопросе 90% ответа.


« Ответ #1 : 29-07-2014 13:12 » 

Походу у тебя не правильно в буфере пакет  составлен.
Записан
Страниц: [1]   Вверх
  Печать  
 

Powered by SMF 1.1.21 | SMF © 2015, Simple Machines