| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > C/C++: Программирование под Unix/Linux > Проблема с функцией recvfrom() |
| Автор: LisAnd 23.7.2009, 13:30 |
| У меня не получается принять адрес отправителя датограммы. Если два последних параметра в функции ставля как 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); |
| Автор: xvr 24.7.2009, 11:41 | ||
Переменную addr_size надо проинициализировать размером буфера под адрес:
|
| Автор: LisAnd 24.7.2009, 13:02 |
| Причену возникновения ошибки нашел. Похоже возникало наложение переменных. А вот почему оно возникало пока еще не известно. Сделал присвоение переменной длины адреса присвоение начального значения, пока работает Добавлено через 14 минут и 24 секунды xvr, пордон, с утра глянул не увидел ответов а потом как с ошибкой справился сразу отписался. Получается скорее всего тогда это только из-за того что инициализацию не сделал. Просто прога работала и без инициализации, просто объявил перед переменной addr_size другую переменную, вот и подумал что наложение возникает. |