Create reps
This commit is contained in:
@@ -0,0 +1,65 @@
|
||||
#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;
|
||||
}
|
||||
Reference in New Issue
Block a user