#include <stdio.h>
#include <winsock2.h>
int main()
{
WSADATA wsaData;
int iResult = 0;
SOCKET ListenSocket;
struct sockaddr_in service;
SOCKET AcceptSocket;
iResult = WSAStartup(MAKEWORD(2,2), &wsaData);
if (iResult != NO_ERROR)
{
printf("Error at WSAStartup()\n");
}
ListenSocket = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);
if (ListenSocket == INVALID_SOCKET)
{
printf("Error at socket(): %ld\n", WSAGetLastError());
WSACleanup();
return 1;
}
service.sin_family = AF_INET;
service.sin_addr.s_addr = inet_addr("127.0.0.1");
service.sin_port = htons(27015);
if (bind(ListenSocket,
(SOCKADDR *)&service,
sizeof(service)) == SOCKET_ERROR)
{
printf("bind() failed.\n");
closesocket(ListenSocket);
return 1;
}
if (listen(ListenSocket, 1) == SOCKET_ERROR)
{
printf("Error listening on socket.\n");
}
printf("Waiting for client to connect...\n");
while (1)
{
AcceptSocket = SOCKET_ERROR;
while (AcceptSocket == SOCKET_ERROR)
{
AcceptSocket = accept(ListenSocket, NULL, NULL);
}
printf("Client connected.\n");
ListenSocket = AcceptSocket;
break;
}
WSACleanup();
return 0;
}
|