1#define _CRT_SECURE_NO_WARNINGS
11#pragma comment(lib,"ws2_32.lib")
12#pragma comment(lib,"Synchronization.lib")
16#define DEFAULT_BUFLEN 1024
17#define DEFAULT_PORT "8999"
26 if (iSendResult == SOCKET_ERROR)
28 printf(
"send failed with error: %d\n", WSAGetLastError());
35 struct addrinfo hints;
37 struct addrinfo *result = NULL;
39 ZeroMemory(&hints,
sizeof(hints));
40 hints.ai_family = AF_INET;
41 hints.ai_socktype = SOCK_STREAM;
42 hints.ai_protocol = IPPROTO_TCP;
43 hints.ai_flags = AI_PASSIVE;
46 iResult = getaddrinfo(NULL,
DEFAULT_PORT, &hints, &result);
49 fprintf(stderr,
"getaddrinfo failed with error: %d\n", iResult);
55 listenSocket = socket(result->ai_family, result->ai_socktype, result->ai_protocol);
58 fprintf(stderr,
"socket failed with error: %ld\n", WSAGetLastError());
65 iResult = bind(
listenSocket, result->ai_addr, (
int)result->ai_addrlen);
66 if (iResult == SOCKET_ERROR)
68 fprintf(stderr,
"bind failed with error: %d\n", WSAGetLastError());
83 if (iResult == SOCKET_ERROR)
85 fprintf(stderr,
"listen failed with error: %d\n", WSAGetLastError());
93 if (clientSocket == INVALID_SOCKET)
95 fprintf(stderr,
"accept failed with error: %d\n", WSAGetLastError());
101 iResult = recv(clientSocket, recvbuf, recvbuflen, 0);
109 fprintf(stderr,
"recv failed with error: %d\n", WSAGetLastError());
110 closesocket(clientSocket);
118 printf(
"\nInitialising Winsock...");
119 if (WSAStartup(MAKEWORD(2, 2), &
wsa) != 0)
121 fprintf(stderr,
"Failed. Error Code : %d\n", WSAGetLastError());
124 printf(
"Initialized.\n");
142 iResult = recv(sockClient.
clientSocket, recvbuf, recvbuflen, 0);
146 WaitOnAddress(&sockClient.
iswait,
150 send_to_socket(clientInfo,
"__continue__", (
int)(strlen(
"__continue__")) + 1);
152 else if (iResult == 0)
153 fprintf(stderr,
"Connection closing...\n");
156 fprintf(stderr,
"recv failed with error: %d\n", WSAGetLastError());
161 }
while (iResult > 0);
165 if (iResult == SOCKET_ERROR)
167 fprintf(stderr,
"shutdown failed with error: %d\n", WSAGetLastError());
void process_command(ptrCLIENTINFO clientInfo, char *command, int len)
void * add_new_socket_client(SOCKET s, char *name)
DWORD WINAPI command_recv_process(LPVOID lpParam)
DWORD WINAPI listen_for_client(LPVOID lpParam)
void send_to_socket(ptrCLIENTINFO info, char *buf, int len)
union stru_clientInfo::client CLIENT
SOCKCLIENTINFO sockClient