winsock i o的select模型的學習

2021-04-13 22:25:00 字數 1409 閱讀 2733

#include

#include

#include

#pragma comment(lib,"ws2_32.lib")

bool insertsock(socket* psock,  socket sock)

}if   (nindex == fd_setsize - 1)

return false;

return true;

}int main(int argc, char* argv)

sockaddr_in sin;

sin.sin_family=af_inet;

sin.sin_port=htons(8888);

sin.sin_addr.s_un.s_addr=inaddr_any;

if(bind(s,(lpsockaddr)&sin,sizeof(sin))==socket_error)

if(listen(s,63)==socket_error)

for (int i=0;i < 64; i++)

sockaddr_in remoteaddr;

int naddrlen=sizeof(remoteaddr);

//char sztext="hello world!";

fd_set fd;

fd_zero(&fd);

timeval tv=;

fd_set(s,&fd);

printf("server start:%d/n",getlasterror());

int num=0;

while(true)

/*if (nresult > 0)

*/if(fd_isset(s,&fd))

if(!insertsock(clientsockarray,client))

fd_set(client,&fd);

}// öð¸ö´¦àí´¦óú´ý¾ö״쬵äì×½ó×ö

nresult = select(0,&fd, null,null,&tv);

if (nresult == socket_error)

for (int nindex  =  0;  nindex  <=  fd_setsize - 1;  nindex++)

// ½«½óêüµ½µäêý¾ý½øðð´¦àí,´ë´¦ö»½«æäêä³ö

//char buffer[256];

//recv(clientsockarry[nindex],buffer,256);

printf("has recv data from socket %d : %s",i, buffer);

printf(" num:%d/n",++num);}}

}closesocket(s);

wsacleanup();

return 0;

WinSock IO模型 重疊模型

設計的原理便是 讓應用程式使用乙個重疊的資料結構,一次投遞乙個或者多個io請求。1.建立乙個套接字,並在指定的埠上監聽。2.建立成功以後,將其與本地的介面繫結到一起,便可以進行重疊的io操作。3.接收乙個進入的請求。結構體的說明 注 函式通常會失敗,返回socket error狀態wsa io pe...

VC 網路程式設計 WINSOCK I O模型

window 下的套接字以來兩種方式執行i o操作,阻塞io 非阻塞io,一般預設使用的是阻塞io 即執行緒會等待不會把控制權利立刻返回給程式,這就意為乙個執行緒在某乙個時候只能夠去執行乙個io操作。如果服務端想和多個客戶端同時進行通訊的話就要使用多執行緒程式設計,但是會增加開銷,如果採用非阻塞io...

五種WinSock I O模型的特點及比較

select 模型 select模型是winsock中應用最廣泛的模型之一,核心就是select函式,它可用於 判斷套接字上是否存在資料,或者能否向乙個套接字寫入資料。這個函式可以有效地防止應用程式在套接字處於阻塞模式中時,send或recv進入 阻塞狀態 同時也可以防止產生大量的wsaewould...