if((m_socket = socket(AF_INET, SOCK_STREAM , IPPROTO_TCP )) == INVALID_SOCKET)
{
printf("Could not create socket : %d\n" , WSAGetLastError());
return;
}
printf("create socket ok\n");
if (connect(m_socket , (struct sockaddr *)&m_server , sizeof(m_server)) < 0)
{
printf("Could not create socket : %d\n" , WSAGetLastError());
return;
}
puts("connect ok");
fd_set fdRead;
fd_set fdWrite;
FD_ZERO(&fdRead);
FD_ZERO(&fdWrite);
FD_SET(m_socket, &fdWrite);
FD_SET(m_socket, &fdRead);
for (int i = 0; i < 3; i++){
// fd_set fdRead =fdRead;
int nRet = select(0, &fdRead, &fdWrite, NULL, NULL);
if (nRet > 0)
{
for (int i = 0; i <fdRead.fd_count; ++i)
{
if (FD_ISSET(fdRead.fd_array[i], &fdRead)){
char szText[256];
int nRev = recv(fdRead.fd_array[i], szText, sizeof(szText), 0);
if (nRev > 0){
szText[nRev] = '\0';
printf("%s", szText);
}
else{
closesocket(fdRead.fd_array[i]);
FD_CLR(fdRead.fd_array[i], &fdRead);
}
}
}
for (int i = 0; i < fdWrite.fd_count; ++i)
{
if (FD_ISSET(fdWrite.fd_array[i], &fdWrite)){
char *sendbuf = "hello world;";
int nRev = send(fdRead.fd_array[i], sendbuf, strlen(sendbuf)+1, 0);
}
}
}
else
{
printf("select error \n");
}
}
Winsock select client
最新推荐文章于 2017-12-26 22:04:35 发布