[code=C/C++]我在windows下使用select步驟如下
while(1)
{
FD_ZERO(&fds);
for(i = 0; i <= 64; i++)
{
fd_set(sock[i], &fds); //sock[i]都已成功建立,并且都可以收到資料。
}
ret = select(NULL, &fds, NULL, NULL, tv);
if(ret < 0)
exit(0);
else if(ret == 0)
continue;
for(i = 0; i <= 64; i++)
{
if(FD_ISSET(sock[i], &fds))
{
//do something
}
}
}
我能肯定sock[64]收到了資料因為我用抓包工具看到的,但是上面的程式探查不出!
如果我将其中一個句柄例如sock[3]移除fds此時就能探查到sock[64]的資料!
最終我得出的結論是select最多隻能監視63個句柄,超過這之後的就無法探查!這是什麼原因,有人遇到過類似情況嗎?
偷偷告訴你一個南京不用上班就能輕松賺錢的辦法 廣告 易神 · 燨燚
問題點數:20分
CSDN推薦
CSDN今日推薦
- ⋅ 句柄監控
- ⋅ 用linux指令和程式實際測試一下單程序能打開的最大的句柄數(也可以說是檔案數)------并不一定是1024/2048哈
- ⋅ Windows作業系統單檔案夾下到底能存放多少檔案及單檔案的最大容量
- ⋅ [轉]WINDOWS下一個檔案夾最多可以放多少個檔案--終于找到答案了
- ⋅ WINDOWS下一個檔案夾最多可以放多少個檔案--終于找到答案了
- ⋅ 系統監控之檔案句柄監控
- ⋅ oracle 中IN指令
- ⋅ window一個檔案夾中最多可以存儲多少個檔案
- ⋅ select句柄數限制 及總結
- ⋅ 一個程序最多能包含多少線程
zhanshen2891
0 2011-10-20 11:27:49
引用 ・ 舉報 ・ #1 得分:1
我記得是1024
lanneret1234
0 2011-10-20 11:36:04
引用 ・ 舉報 ・ #2 得分:18
C/C++ code?
1 2 3 | |
在WinSock2.h
試一下改一下FD_SETSIZE的值
woailp___2005
0 2011-10-20 11:38:56
引用 ・ 舉報 ・ #3 得分:1
引用 1 樓 zhanshen2891 的回複:
我記得是1024
應該是這個0.0
lisong871121
0 2011-10-20 12:17:01
引用 ・ 舉報 ・ #4 得分:0
引用 2 樓 lanneret1234 的回複:
C/C++ code
#ifndef FD_SETSIZE
#define FD_SETSIZE 64
#endif
在WinSock2.h
試一下改一下FD_SETSIZE的值
按照你說的方法我将那個宏改大後問題解決了!!!