18,363
社区成员




DWORD _stdcall thread(LPVOID lp)
{
SOCKET _socket;
_socket = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);
if (SOCKET_ERROR == _socket)
{
char tmp[55];
sprintf(tmp, "socket创建失败,原因:%d", WSAGetLastError());
OutputDebugString(tmp);
Sleep(2000);
return SOCKET_ERROR;
}
sockaddr_in clientAddr;
memset(&clientAddr, 0, sizeof(clientAddr));
clientAddr.sin_family = AF_INET;
clientAddr.sin_addr.s_addr = inet_addr("111.178.146.10");
clientAddr.sin_port = ::htons(u_short(2001));
int iMode = 1;
ioctlsocket(_socket,FIONBIO, (u_long FAR*) &iMode);
FD_SET WriteSet;
timeval timeout;
timeout.tv_sec = 2; // 检测时间2秒
timeout.tv_usec = 0;
char error;
int len = sizeof(char);
BOOL bReuseaddr=TRUE;
setsockopt(_socket,SOL_SOCKET ,SO_REUSEADDR,(const char*)&bReuseaddr,sizeof(BOOL));
if ( 0 != connect(_socket, (SOCKADDR*)&clientAddr, sizeof(clientAddr)) )
{
FD_ZERO(&WriteSet);
FD_SET(_socket, &WriteSet);
if ( select(0, NULL, &WriteSet, NULL, &timeout) > 0 )
{
getsockopt(_socket, SOL_SOCKET, SO_ERROR, &error, &len);
if (error != 0)
{
char tmp[55];
sprintf(tmp, "socket创建失败,原因:%d", WSAGetLastError());
OutputDebugString(tmp);
closesocket(_socket);
return SOCKET_ERROR;
}
}
else
{
char tmp[55];
sprintf(tmp, "socket创建失败,原因:%d", WSAGetLastError());
OutputDebugString(tmp);
closesocket(_socket);
return SOCKET_ERROR;
}
}
OutputDebugString("连接成功");
Sleep(100000000);
return 0;
}
void CConnectDlg::OnOK()
{
WSADATA m_wsaD;
if ( 0 != WSAStartup(0x202,&m_wsaD) )
{
::MessageBox(0, "初始化WSA失败!", 0, 0);
}
for (int i = 0; i < 1000; i++)
{
CreateThread(0, 0, thread, 0, 0, 0);
Sleep(100);
}
}