Untitled
unknown
plain_text
2 months ago
2.0 kB
7
Indexable
#include <iostream>
#include <vector>
#include <cstring>
#include <arpa/inet.h>
#include <unistd.h>
#define BUFFER_SIZE 65535
struct Target {
std::string ip;
int port;
};
int main() {
int sockfd;
char buffer[BUFFER_SIZE];
// 🔹 Ziele (deine cbftp Instanzen)
std::vector<Target> targets = {
{"127.0.0.1", 1337},
{"127.0.0.1", 1338}
// weitere möglich
};
// 🔹 Socket erstellen
sockfd = socket(AF_INET, SOCK_DGRAM, 0);
if (sockfd < 0) {
perror("Socket failed");
return 1;
}
// 🔹 Empfangsadresse (hier hört er auf Port 9999)
sockaddr_in server_addr{};
server_addr.sin_family = AF_INET;
server_addr.sin_port = htons(9999);
server_addr.sin_addr.s_addr = INADDR_ANY;
if (bind(sockfd, (struct sockaddr*)&server_addr, sizeof(server_addr)) < 0) {
perror("Bind failed");
return 1;
}
std::cout << "Listening on UDP port 9999...\n";
while (true) {
sockaddr_in client_addr{};
socklen_t addr_len = sizeof(client_addr);
ssize_t len = recvfrom(sockfd, buffer, BUFFER_SIZE, 0,
(struct sockaddr*)&client_addr, &addr_len);
if (len < 0) {
perror("recvfrom failed");
continue;
}
std::cout << "Received packet (" << len << " bytes)\n";
// 🔹 an alle Targets weiterleiten
for (const auto& target : targets) {
sockaddr_in target_addr{};
target_addr.sin_family = AF_INET;
target_addr.sin_port = htons(target.port);
inet_pton(AF_INET, target.ip.c_str(), &target_addr.sin_addr);
sendto(sockfd, buffer, len, 0,
(struct sockaddr*)&target_addr, sizeof(target_addr));
std::cout << "Forwarded to " << target.ip << ":" << target.port << "\n";
}
}
close(sockfd);
return 0;
}Editor is loading...
Leave a Comment