{
int error;
SOCKADDR_IN socketaddr;
WSADATA wsaData;
if (g_serverSocket != INVALID_SOCKET)
{
strcpy(g_szStatus, “Сервер уже запущен”);
return false;
}
if (WSAStartup(WINSOCK_VERSION, &wsaData))
{
strcpy(g_szStatus, “Ошибка инициализации Winsock”);
return false;
}
g_serverSocket = socket(PF_INET, SOCK_STREAM, 0);
if (g_serverSocket == INVALID_SOCKET)
{
strcpy(g_szStatus, «Ошибка создания сокета»);
return false;
}
socketaddr.sin_family = AF_INET;
socketaddr.sin_addr.s_addr = INADDR_ANY;
socketaddr.sin_port = htons(80);
error = bind(g_serverSocket, (LPSOCKADDR)&socketaddr, sizeof(socketaddr));
if (error == SOCKET_ERROR)
{
strcpy(g_szStatus, “Ошибка связи сокета с портом”);
return false;
}
error = WSAAsyncSelect(g_serverSocket, hWnd, WM_SERVER_ACCEPT, FD_ACCEPT);
if (error == SOCKET_ERROR)
{
strcpy(g_szStatus, “Ошибка связи сокета с окном”);
return false;
}
error = listen(g_serverSocket, 10);
if (error == SOCKET_ERROR)
{
strcpy(g_szStatus, “Ошибка прослушивания сокета”);
return false;
}
strcpy(g_szStatus, “Сервер успешно запущен”);
return true;
}
Void Stop()
{
if (g_serverSocket == INVALID_SOCKET)
{
strcpy(g_szStatus, «Сервер не запущен или уже остановлен»);
return;
}
closesocket(g_serverSocket);
g_serverSocket = INVALID_SOCKET;