#include "stdafx.h" #include #include #define IP_ADDRESS "127.0.0.1" #define IP_PORT 12934 #define RECVBUFF_SIZE 500 WSAData wsaData; sockaddr_in serverAddr; SOCKET m_socket; int isSocketOK(int retValue, TCHAR * msg) { if (retValue!=SOCKET_ERROR) return TRUE; std::wcout << msg <<_TEXT(": ")<< WSAGetLastError() << _TEXT("\n"); switch(WSAGetLastError()) { case WSAEHOSTDOWN: std::wcout << L"Host is down"; break; case WSAECONNREFUSED: std::wcout << L"Connection Refused"; break; } WSACleanup(); return FALSE; } int _tmain(int argc, _TCHAR* argv[]) { int iResult = WSAStartup(MAKEWORD(2,2), &wsaData); if(iResult != NO_ERROR) { std::wcout << L"Error at Socket startup\n" << iResult << L"\n"; return -1; } m_socket = socket(AF_INET,SOCK_STREAM,IPPROTO_TCP); if(m_socket == INVALID_SOCKET) { std::wcout << L"Error in socket" << WSAGetLastError() << "\n"; WSACleanup(); return -1; } std::wcout << L"Socket Created\n"; serverAddr.sin_family = AF_INET; serverAddr.sin_addr.s_addr = inet_addr(IP_ADDRESS); serverAddr.sin_port = htons(IP_PORT); if (!isSocketOK(bind(m_socket,(SOCKADDR*)&serverAddr, sizeof serverAddr), "Failed to bind server socket")) return -1; std::wcout << L"Socket bound\n"; if(!isSocketOK(listen(m_socket,SOMAXCONN),"Listen failed")) return -1; std::wcout << L"Listening... \n"; int sizeofSin = sizeof serverAddr; int bytes; do { SOCKET clientSocket = accept(m_socket,(SOCKADDR*)&serverAddr,&sizeofSin); if(!isSocketOK(listen(m_socket,SOMAXCONN),"Accept failed")) return -1; TCHAR recvBuff[RECVBUFF_SIZE +1]; int buffLen = RECVBUFF_SIZE*sizeof(TCHAR); TCHAR sendBuff[] = _TEXT("What is next\0"); do { bytes = recv(clientSocket,recvBuff,buffLen,0); if(bytes < 0) break; recvBuff[bytes] = 0; std::wcout << _T(recvBuff) << _T("\n"); bytes = send(clientSocket,sendBuff,sizeof(sendBuff),0); } while (0 < bytes); } while (WSAGetLastError() == WSAECONNRESET); WSACleanup(); return 0; }