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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Проблема с функцией recvfrom() 
V
    Опции темы
LisAnd
Дата 23.7.2009, 13:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



У меня не получается принять адрес отправителя датограммы.
Если два последних параметра в функции ставля как NULL прием датограмм идет. А если вписываю как полагается указатель на структуру адреса и указатель на переменную для хранения размера адреса приема нет. Раньше на Slackware Linux всё получалось, не получалось на Linux Open Suse, хотя запускал один и тот же код. Теперь и на Slackware Linux не работает.

функцию я вызываю так:

unsigned int addr_size;
struct sockaddr_in AddrClient;
unsigned char PaketRecv[255];
int SokServerListen;
...
recvfrom(SokServerListen,&PaketRecv,sizeof(PaketRecv),0,(struct sockaddr *)&AddrClient,&addr_size);


Это сообщение отредактировал(а) LisAnd - 23.7.2009, 13:33
PM MAIL   Вверх
xvr
Дата 24.7.2009, 11:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 7046
Регистрация: 28.8.2007
Где: Дублин, Ирландия

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



Переменную addr_size надо проинициализировать размером буфера под адрес:
Код

struct sockaddr_in AddrClient;
unsigned int addr_size = sizeof(AddrClient); // <<<
unsigned char PaketRecv[255];
int SokServerListen;
...
recvfrom(SokServerListen,&PaketRecv,sizeof(PaketRecv),0,(struct sockaddr *)&AddrClient,&addr_size);


PM MAIL   Вверх
LisAnd
Дата 24.7.2009, 13:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Причену возникновения ошибки нашел. Похоже возникало наложение переменных. А вот почему оно возникало пока еще не известно. Сделал присвоение переменной длины адреса присвоение начального значения, пока работает   smile  . Но по моему опять где нибудь вылезет  smile

Добавлено через 14 минут и 24 секунды
xvr, пордон, с утра глянул не увидел ответов а потом как с ошибкой справился сразу отписался. Получается скорее всего тогда это только из-за того что инициализацию не сделал. Просто прога работала и без инициализации, просто объявил перед переменной addr_size другую переменную, вот и подумал что наложение возникает.
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С/С++: Программирование под Unix/Linux"
xvr
  • Проставьте несколько ключевых слов темы, чтобы её можно было легче найти.
  • Не забывайте пользоваться кнопкой "Код".
  • Вопросы мобильной разработки тут
  • Телепатов на форуме нет! Задавайте чёткий, конкретный и полный вопрос. Указывайте полностью ошибки компилятора и компоновщика.
  • Новое сообщение должно иметь прямое отношение к разделу форума. Флуд, флейм, оффтопик запрещены.
  • Категорически запрещается обсуждение вареза, "кряков", взлома программ и т.д.

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, xvr.

 
 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Программирование под Unix/Linux | Следующая тема »


 




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


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

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