#include <iostream>
#include <WinSock2.h>
#include <ws2tcpip.h>
#include <iphlpapi.h>
#include <conio.h>
#pragma comment(lib, "Ws2_32.lib")
void main( int argc, char *argv[] )
{
WSAData wsaData;
SOCKET mSocket, acceptSocket;
struct sockaddr_in service, remote;
char sendbuf[1024] = "Hello! I'm server, sending some test data...";
char recvbuf[1024] = "";
int bytesSent = SOCKET_ERROR;
int bytesRecv = SOCKET_ERROR;
char exit = ' ';
if( WSAStartup(MAKEWORD(2,2), &wsaData) != 0 )
{
std::cout << "WSAStartup failed!" << std::endl;
getch(); return;
}
if( (mSocket = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP)) == INVALID_SOCKET )
{
std::cout << "Error at socket(): " << WSAGetLastError() << std::endl;
WSACleanup; getch(); return;
}
service.sin_family = AF_INET;
service.sin_addr.S_un.S_addr = inet_addr("127.0.0.1");
service.sin_port = htons( 55555 );
if( (bind(mSocket, (SOCKADDR*) &service, sizeof(service))) == SOCKET_ERROR )
{
std::cout << "Error at bind(): " << WSAGetLastError() << std::endl;
closesocket( mSocket ); WSACleanup; getch(); return;
}
if( listen(mSocket, 1) == SOCKET_ERROR )
{
std::cout << "Error at listen(): " << WSAGetLastError() << std::endl;
closesocket( mSocket ); WSACleanup; getch(); return;
}
std::cout << "****************************************" << std::endl;
std::cout << "* Server is ready. Waiting for client! *" << std::endl;
std::cout << "****************************************" << std::endl << std::endl;
acceptSocket = SOCKET_ERROR;
while( acceptSocket == SOCKET_ERROR )
{
acceptSocket = accept( mSocket, NULL, NULL );
}
mSocket = acceptSocket;
bytesRecv = recv( mSocket, recvbuf, strlen(recvbuf), 0 );
if( bytesRecv == SOCKET_ERROR )
{
std::cout << "Error at recv(): " << WSAGetLastError() << std::endl;
closesocket( mSocket ); WSACleanup; getch(); return;
}
printf( "Bytes received: %dn", bytesRecv );
printf( "Client: %sn", recvbuf );
system( "pause" );
closesocket( mSocket );
WSACleanup;
}