#include #include #include #include using namespace std; int filterSocket(char fBytes[]); WORD sockVersion; WSADATA wsaData; SOCKET listeningSocket; SOCKADDR_IN serverInfo; int nret, lret, i; int nReadBytes; const int kBufferSize = 1024; char acReadBuffer[kBufferSize]; char buf[33]; char bConnect1[] = {0x33, 0x00, 0x00, 0x00, 0x46, 0x72, 0x7A, 0x40, 0x52, 0x30, 0x78, 0x35, 0x08 }; char bConnect2[] = {0x0d, 0x00}; SOCKET AcceptConnection(SOCKET ListeningSocket, sockaddr_in& sinRemote) { int nAddrSize = sizeof(sinRemote); return accept(ListeningSocket, (sockaddr*)&sinRemote, &nAddrSize); } int startWinsock(){ sockVersion = MAKEWORD(1 , 1); if(WSAStartup(sockVersion, &wsaData) != 0) { printf("WSAStartup Failed\n"); nret = WSAGetLastError(); itoa(nret, buf, 10); printf(buf); printf("\n"); WSACleanup(); return 1; } else{ listeningSocket = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP); if(listeningSocket == INVALID_SOCKET) { nret = WSAGetLastError(); printf("Sockets are bad"); itoa(nret, buf, 10); printf(buf); WSACleanup(); return 2; } serverInfo.sin_family = AF_INET; serverInfo.sin_addr.s_addr = INADDR_ANY; serverInfo.sin_port = htons(8484); nret = bind(listeningSocket, (LPSOCKADDR)&serverInfo, sizeof(struct sockaddr)); if (nret == SOCKET_ERROR) { nret = WSAGetLastError(); printf("bind"); WSACleanup(); return 3; } nret = listen(listeningSocket, 10); // Up to 10 connections may wait at any if (nret == SOCKET_ERROR) { nret = WSAGetLastError(); printf("listen"); WSACleanup(); return 4; } while(1) { printf("listening\n"); sockaddr_in sinRemote; SOCKET sd = AcceptConnection(listeningSocket, sinRemote); if (sd != INVALID_SOCKET) { std::cout << "Accepted connection from " << inet_ntoa(sinRemote.sin_addr) << ":" << ntohs(sinRemote.sin_port) << ".\n"; send(sd, bConnect2, sizeof(bConnect2), 0); cout << "Sent" << sizeof(bConnect2) << " bytes to client." << endl; send(sd, bConnect1, sizeof(bConnect1), 0); cout << "Sent" << sizeof(bConnect1) << " bytes to client." << endl; nReadBytes = recv(sd,acReadBuffer, kBufferSize, 0); } else{ printf("Bad Socket"); } } } return 0; printf("Success\n"); } int main() { printf("Start\n"); if(startWinsock() != 0) printf("Error\n"); else printf("success\n"); WSACleanup(); closesocket(listeningSocket); printf("Exit\n"); Sleep(1000); return 0; }