#define _WINSOCK_DEPRECATED_NO_WARNINGS #include #include #include #pragma comment(lib, "Ws2_32.lib") int main(int argc, char* argv[]) { if (argc != 4) { std::cerr << "Usage: " << argv[0] << " \n"; return 1; } const char* host = argv[1]; const char* port = argv[2]; const char* file_path = argv[3]; WSADATA wsaData; if (WSAStartup(MAKEWORD(2, 2), &wsaData) != 0) { std::cerr << "WSAStartup failed\n"; return 1; } SOCKET sock = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP); if (sock == INVALID_SOCKET) { std::cerr << "Failed to create socket\n"; WSACleanup(); return 1; } sockaddr_in serverAddr; serverAddr.sin_family = AF_INET; serverAddr.sin_addr.s_addr = inet_addr(host); serverAddr.sin_port = htons(atoi(port)); if (connect(sock, reinterpret_cast(&serverAddr), sizeof(serverAddr)) == SOCKET_ERROR) { std::cerr << "Failed to connect to server\n"; closesocket(sock); WSACleanup(); return 1; } std::ifstream file(file_path, std::ios::binary); if (!file) { std::cerr << "Failed to open file: " << file_path << "\n"; closesocket(sock); WSACleanup(); return 1; } char buffer[1024]; while (!file.eof()) { file.read(buffer, sizeof(buffer)); int bytesRead = file.gcount(); send(sock, buffer, bytesRead, 0); } file.close(); closesocket(sock); WSACleanup(); std::cout << "File sent successfully.\n"; return 0; }