Модераторы: feodorv
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> не дошол udp пакет 
:(
    Опции темы
s0k0l
Дата 28.8.2007, 09:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 19
Регистрация: 22.8.2007

Репутация: нет
Всего: нет



Код

#include <stdio.h>
#include <sys/types.h>
#include <sys/socket.h>
#include <netinet/in.h>

struct UdpHead
{
 u_short src_port;
 u_short targ_port;
 u_short length;
 u_short checksum;
};

char message[]="TEST";
char msgbuf[1024];

int main()
{
 int sock;
 struct sockaddr_in addr;
 struct UdpHead udphead;
 char *ip="192.168.25.25";

 
if(sock=socket(AF_INET,SOCK_RAW,IPPROTO_UDP)<0) printf("error sock");

addr.sin_family=AF_INET;
addr.sin_addr.s_addr=htonl(*ip);

udphead.targ_port=htons(139);
udphead.length=htons(sizeof(udphead)+sizeof(message));
udphead.checksum=0;

memcpy((void *)msgbuf,(void *)&udphead,sizeof(udphead));
memcpy((void *)(msgbuf+sizeof(udphead)),(void *)message,sizeof(message));

sendto(sock,msgbuf,sizeof(udphead)+sizeof(message),0,(struct sockaddr *)&addr,sizeof(addr));


close(sock);

 return 0;
}


Отправляю udp пакет , и ловлю его сниффиром на хосте куда отправил, но увы пакет не дошел.  Думаю трабл в проге , так как все файероволы отключены.
PM MAIL   Вверх
ptr
Дата 28.8.2007, 09:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 661
Регистрация: 31.5.2006
Где: Новосибирск

Репутация: 9
Всего: 14



Кто будет заполнять порт в addr?
Код

addr.sin_port=htons(139);

Да и ошибки кто проверять будет?


--------------------
Единственный способ определить границы возможного - это выйти за эти границы, в невозможное.
Артур Кларк.
PM MAIL ICQ   Вверх
s0k0l
Дата 28.8.2007, 09:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 19
Регистрация: 22.8.2007

Репутация: нет
Всего: нет



согласен! но когда добавил , все равно не дошел
PM MAIL   Вверх
ptr
Дата 28.8.2007, 10:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 661
Регистрация: 31.5.2006
Где: Новосибирск

Репутация: 9
Всего: 14



sendto что вернул?


--------------------
Единственный способ определить границы возможного - это выйти за эти границы, в невозможное.
Артур Кларк.
PM MAIL ICQ   Вверх
s0k0l
Дата 28.8.2007, 10:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 19
Регистрация: 22.8.2007

Репутация: нет
Всего: нет



-1 , смотрю что в man-е написано 
PM MAIL   Вверх
ptr
Дата 28.8.2007, 10:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 661
Регистрация: 31.5.2006
Где: Новосибирск

Репутация: 9
Всего: 14



Вместо SOCK_RAW должен быть SOCK_DGRAM.


--------------------
Единственный способ определить границы возможного - это выйти за эти границы, в невозможное.
Артур Кларк.
PM MAIL ICQ   Вверх
s0k0l
Дата 28.8.2007, 10:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 19
Регистрация: 22.8.2007

Репутация: нет
Всего: нет



вся фишка в том , что я хочу явно задавать udp заголовок , а для этого как читал - нужно raw использовать.

Добавлено через 1 минуту и 18 секунд
Вместо SOCK_RAW должен быть SOCK_DGRAM.   - тоже -1

Добавлено через 2 минуты и 19 секунд
В man есть писание ошибок , но чему соответствует -1?
PM MAIL   Вверх
ptr
Дата 28.8.2007, 10:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 661
Регистрация: 31.5.2006
Где: Новосибирск

Репутация: 9
Всего: 14



Что в errno?

Цитата(s0k0l @  28.8.2007,  13:31 Найти цитируемый пост)
а для этого как читал - нужно raw использовать.

Ну да. Правда для этого нужно определённые права иметь.


--------------------
Единственный способ определить границы возможного - это выйти за эти границы, в невозможное.
Артур Кларк.
PM MAIL ICQ   Вверх
s0k0l
Дата 28.8.2007, 10:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 19
Регистрация: 22.8.2007

Репутация: нет
Всего: нет



думаю что root вполне хватит. Сейчас гляну errno

Добавлено через 12 минут и 20 секунд

38 - ENOTSOCK socket operation on non socket
PM MAIL   Вверх
s0k0l
Дата 28.8.2007, 11:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 19
Регистрация: 22.8.2007

Репутация: нет
Всего: нет



нашел описание : дескриптор ссылается на файл а не на сокет . Т.е  sock - это не сокет
PM MAIL   Вверх
ptr
Дата 28.8.2007, 11:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 661
Регистрация: 31.5.2006
Где: Новосибирск

Репутация: 9
Всего: 14



Надо:
Код

if((sock=socket(AF_INET,SOCK_RAW,IPPROTO_UDP))<0)


У "<" приоритет выше чем у "=".

Это сообщение отредактировал(а) ptr - 28.8.2007, 11:33


--------------------
Единственный способ определить границы возможного - это выйти за эти границы, в невозможное.
Артур Кларк.
PM MAIL ICQ   Вверх
s0k0l
Дата 28.8.2007, 11:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 19
Регистрация: 22.8.2007

Репутация: нет
Всего: нет



Точно, как раз заметил что socket= 0

Добавлено через 4 минуты и 17 секунд
спасибо за помощь!!!!!!!!!!! smile 
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Сети | Следующая тема »


 




[ Время генерации скрипта: 0.1871 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.