Files
Данил 9897882742 Create reps
2024-07-20 13:22:02 +07:00

65 lines
1.6 KiB
C++

#define _WINSOCK_DEPRECATED_NO_WARNINGS
#include <iostream>
#include <fstream>
#include <WinSock2.h>
#pragma comment(lib, "Ws2_32.lib")
int main(int argc, char* argv[]) {
if (argc != 4) {
std::cerr << "Usage: " << argv[0] << " <host> <port> <file_path>\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<sockaddr*>(&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;
}