#include #define WIN32_LEAN_AND_MEAN #include #include #include #include #include #include uint32_t msg_length_max = 200000; int main(int argc, char* argv[]) try { if (argc != 4) { printf("Usage: %s account-number config-file-path config-file-name \n", argv[0]); exit(10); } WSADATA wsaData; int iResult = WSAStartup(MAKEWORD(2, 2), &wsaData); if (iResult != 0) { throw failure("WSAStartup error is ") << iResult; } SOCKET Socket = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP); if (Socket==INVALID_SOCKET) { WSACleanup(); throw failure("Socket() error is ") << WSAGetLastError(); } SOCKADDR_IN sinClient; memset(&sinClient, 0, sizeof(sinClient)); char cIP[50]; strcpy(cIP, "127.0.0.1"); sinClient.sin_family = AF_INET; sinClient.sin_addr.s_addr = inet_addr(cIP); // Where to start server? sinClient.sin_port = htons(8888); if (connect(Socket, (LPSOCKADDR)&sinClient, sizeof(sinClient)) == SOCKET_ERROR){ //MessageBox(NULL, (LPCTSTR)"Could not connect to the server!", (LPCTSTR)"Client::Error", MB_OK|MB_ICONERROR); WSACleanup(); throw failure("Connect() error is ") << WSAGetLastError(); } std::auto_ptr sendbuf(new SendCompressedBuffer(4096)); sendbuf->sock_ = Socket; #ifdef BIG_ENDIANS uint8_t byteOrder = most_significant_first; std::auto_ptr > buf(new ReceiveCompressedBuffer(4096)); #else uint8_t byteOrder = least_significant_first; std::auto_ptr > buf(new ReceiveCompressedBuffer(4096)); #endif buf->sock_ = Socket; if (1 != send(sendbuf->sock_, (char*) &byteOrder, 1, 0)) { throw failure("send() failed."); } user_info user; user.accountNbr_ = strtol(argv[1], 0, 10); user.directory_ = argv[2]; user.filename_ = argv[3]; msg_shepherd::Send(sendbuf.get(), user); buf->GotPacket(); uint32_t message_length; Receive_Precursor(buf.get(), message_length); bool reqResult; msg_shepherd::Receive(buf.get(), reqResult); if (!reqResult) { flex_string errorMsg; msg_shepherd::Receive(buf.get(), errorMsg); throw failure(errorMsg); } closesocket(Socket); } catch (std::exception const& ex) { printf("main(): %s\n", ex.what()); }