Linux Accept函數(shù)問題說明求指點(diǎn)
系統(tǒng)調(diào)用   accept()   會有點(diǎn)古怪的地方的!你可以想象發(fā)生   這樣的事情:有人從很遠(yuǎn)的地方通過一個你在偵聽   (listen())   的端口連接   (connect())   到你的機(jī)器。它的連接將加入到等待接受   (accept())   的隊列   中。你調(diào)用   accept()   告訴它你有空閑的連接。它將返回一個新的套接字文   件描述符!這樣你就有兩個套接字了,原來的一個還在偵聽你的那個端口,   新的在準(zhǔn)備發(fā)送   (send())   和接收   (   recv())   數(shù)據(jù)。這就是Linux Accept函數(shù)的過程!   
Linux Accept函數(shù)代碼片段如下:
 
- struct sockaddr addrc;
 - int fdc;
 - socklen_t len=sizeof(struct sockaddr_in);
 - fdc=accept(fds,(struct sockaddr*)&addrc,&len);
 - if(fdc==-1)
 - {
 - fprintf(stderr,"Accept error:%s\n",strerror(errno));
 - switch(errno)
 - {
 - case EBADF:
 - printf("EBADF\n");
 - break;
 - case EFAULT:
 - printf("EFAULT\n");
 - break;
 - case ENOTSOCK:
 - printf("ENOTSOCK\n");
 - break;
 - case EOPNOTSUPP:
 - printf("EOPNOTUPP\n");
 - break;
 - case EPERM:
 - case ENOBUFS:
 - case ENOMEM:
 - printf("THis\n");
 - case EINVAL:
 - printf("EINVAL\n");
 - break;
 - default:
 - printf("Other\n");
 - }
 - exit(1);
 
Linux Accept函數(shù)運(yùn)行的時間會報告說 Accept error:Invalid argument
EINVAL
根據(jù)我個人猜測,應(yīng)該是第三個參數(shù)引起來的。accept的***個參數(shù)應(yīng)該沒問題,通過函數(shù)輸出***個參數(shù)是一個正值,而且此前的bind等函數(shù)都用過,沒問題。
還請各位高手幫忙看看,謝謝了
【編輯推薦】
- Linux 查看磁盤空間實(shí)現(xiàn)代碼介紹
 - Linux操作系統(tǒng)需要微軟的十大幫助
 - 探尋Linux到底需要多低的配置
 - Linux測試工具tcpdump監(jiān)視TCP/IP連接命令介紹
 - Linux流量控制實(shí)例應(yīng)用介紹
 















 
 
 
 
 
 
 