2012-06-06 4 views
0

enter code here Я пытаюсь читать запрос маршрутизатор пакета от сетевого интерфейса usb0 с Inet6 семейством я создал сокеты и привязать сокеты к USB0 интерфейсу Я пытаюсь читать данные из интерфейса с использованием системы, какполучить от сокетов не удались

while(1) 
{ 
int len = recvmsg(sockid,&msghdr,0) 
if(len < 0) 
{perror("received failed"); 
exit(1); 
} 
processmessage 

} 

проблема я получаю сообщение об ошибке: не удалось, полученные ресурсы временно unavialble

Интересно сокет еще выход, интерфейс existand привязка successful.what может быть возможной причиной ошибки?

ответ

1

Если ERRNO это EAGAIN можно повторить recvmsg в течение некоторого времени, а затем выйти позже:

int retryCount = 0; 
while(1) { 
    int len = recvmsg(sockid,&msghdr,0) 
    if (len < 0) { 
     if ((errno == EAGAIN) && (++retryCount < 128)) 
      continue; 

     perror("received failed"); 
     exit(1); 
    } 
    retryCount = 0; 
    processmessage 
} 
0

, во-первых, вы должны проверить этот файл:

кота/Proc/SYS/нетто/ipv6/конф/usb0/экспедиторская

убедитесь, или установить значение 1:

эхо "1">/Труды/системы/нетто/ipv6/CONF/usb0/экспедиторская

убедитесь, что значение/proc/sys/net/ipv6/conf/default/forwarding равно 0, а ядро ​​не более 2.6.

удачи!

Смежные вопросы