I have a server code that works when run in a console program, but hangs when run with windows API. The server code is placed in wWinMain in the windows main loop
Code:
WSADATA wsaData;
SOCKET listenfd, socketfd;
static struct sockaddr_in cli_addr; /* static = initialised to zeros */
static struct sockaddr_in serv_addr; /* static = initialised to zeros */
int hit;
int length;
WSAStartup(MAKEWORD(2, 2), &wsaData);
serv_addr.sin_family = AF_INET;
serv_addr.sin_addr.s_addr = htonl(INADDR_ANY);
serv_addr.sin_port = htons(80);
listenfd = socket(AF_INET, SOCK_STREAM, 0);
bind(listenfd, (struct sockaddr *) &serv_addr, sizeof(serv_addr));
listen(listenfd, 64);
while (GetMessage(&msg, nullptr, 0, 0))
{
if (!TranslateAccelerator(msg.hwnd, hAccelTable, &msg)){
TranslateMessage(&msg);
DispatchMessage(&msg);
}
length = sizeof(cli_addr);
socketfd = accept(listenfd, (struct sockaddr *) &cli_addr, &length);
recv(socketfd, buffer, 8096, 0);
sprintf_s(buffer, "<html><body><H1>Hello world</H1></body></html>", 46);
send(socketfd, buffer, strlen(buffer), 0);
shutdown(socketfd, SD_BOTH);
}