64,684
社区成员
发帖
与我相关
我的任务
分享
#include <string>
#include <stdio.h>
#include <WinSock2.h>
#pragma comment(lib, "WS2_32")
void SockSelect(const char* strIP, unsigned short port);
int main()
{
WSAData wsa;
if (WSAStartup(MAKEWORD(2, 2), &wsa) != NO_ERROR)
{
return 0;
}
SockSelect("192.163.35.140", 1234);
SockSelect("192.163.35.179", 1234);
system("pause");
return 0;
}
void SockSelect(const char* strIP, unsigned short port)
{
int error = -1;
int len = sizeof(int);
unsigned long ul = 1;
timeval tm = {20, 0};
SOCKET sock = socket(AF_INET, SOCK_STREAM, 0);
if (sock == INVALID_SOCKET)
{
printf("falied to create socket.\n");
return ;
}
struct sockaddr_in sockserver;
memset(&sockserver, 0, sizeof(struct sockaddr_in));
sockserver.sin_family = AF_INET;
sockserver.sin_addr.s_addr = inet_addr(strIP);
sockserver.sin_port = htons(1234);
ioctlsocket(sock, FIONBIO, &ul);
fd_set set;
if (connect(sock, (const sockaddr*)&sockserver, sizeof(struct sockaddr_in)) == SOCKET_ERROR)
{
FD_ZERO(&set);
error = WSAGetLastError();
if (error == WSAEWOULDBLOCK)
{
FD_SET(sock, &set);
if(select(0, NULL, &set, NULL, &tm) > 0)
{
getsockopt(sock, SOL_SOCKET, SO_ERROR, (char*)&error, &len);
if (error == 0)
{
printf("server: %s connected.\n", strIP);
}
}
else
{
error = WSAGetLastError();
printf("error: %d\n", error);
}
}
}
else
{
printf("server: %s connected.\n", strIP);
}
closesocket(sock);
}