看了源代碼,我明白了。他只是用對上存放SOCKET的句柄。。我們看一下他的新定義結(jié)構(gòu)體。struct win_fd_set {
u_int fd_count;
SOCKET fd_array[1];
};
這個就是新定義結(jié)構(gòu)體,跟原來稍微有點變化只是把64改為1,有些同學(xué)可能見多很多這樣的寫法,這種寫法我也在一些項目使用了。這種寫法可以fd_array動態(tài)變化。
win_fd_set * Set = (win_fd_set*)malloc(sizeof(win_fd_set) + sizoef(SCOEKT) * 10);
Set->fd_array 可以放11 個 SOCKET,因為我的內(nèi)存大小足夠放11個SOCKET。
請記住內(nèi)存是沒有數(shù)據(jù)格式,只要足夠大小,隨便你怎么放。數(shù)據(jù)格式只是方便我們管理和處理數(shù)據(jù)而已。