1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38
| int sockopen(SOCKET* Client, char* host, int port)
{
WSADATA WSAData;
if (WSAStartup(MAKEWORD(2, 2), &WSAData)) {
return FALSE_WINSOCK;
}
SOCKADDR_IN ClientSock;
*Client = INVALID_SOCKET;
HOSTENT* ServerInfos = NULL;
if (!(ServerInfos = gethostbyname(host))) {
WSACleanup();
return FALSE_HOST;
}
memset(&ClientSock, 0, sizeof(SOCKADDR_IN));
memcpy(&ClientSock.sin_addr.s_addr, ServerInfos->h_addr, ServerInfos->h_length);
ClientSock.sin_port = htons(port);
ClientSock.sin_family = AF_INET;
if (!(*Client = socket(PF_INET, SOCK_STREAM, IPPROTO_TCP))) {
WSACleanup();
return FALSE_SOCKET;
}
if (connect(*Client, (SOCKADDR*) &ClientSock, sizeof(SOCKADDR_IN))) {
WSACleanup();
return FALSE_CONNECT;
}
// fonction de reception:
DWORD RecvThreadID = 0;
HANDLE RecvThread = NULL;
if (!(RecvThread = CreateThread(NULL, 0, &ClientRecv, Client, 0, &RecvThreadID))) {
WSACleanup();
return FALSE_THREAD;
}
CloseHandle(RecvThread);
return BUBSOCK_OK;
} |
Partager