Port weiterleiten von Pc zu anderen?

... komplette Frage anzeigen

1 Antwort

Ich selbst würde ein kleines Programm schreiben, das das macht.

Du verwendest die Befehle:

int s = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);
bind(s, &adresse, sizeof(adresse));
listen(s, 5);

... um das Warten auf eingehende Verbindungen zu starten.

Danach verwendest du den Befehl:

int as = accept(s, NULL, NULL);

Um jeweils auf eine eingehende Verbindung zu warten. Du startest einen Thread für jede eingehende Verbindung.

In dem Thread stellst du dann eine ausgehende Verbindung zum zweiten Rechner her:

int s2 = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);
connect(s2, &adresse, sizeof(adresse));


Nun must du in dem Thread noch die Daten zwischen beiden Verbindungen hin- und herschaufeln. Das Ganze machst du ungefähr so:

while(1)
{
char buffer[GrosseZahl];
...
select(...);
if(FD_ISSET(as))
{
int l = recv(as, buffer, sizeof(buffer), 0);
if(l < 1) break;
send(s2, buffer, l, 0);
}
if(FD_ISSET(s2))
{
int l = recv(s2, buffer, sizeof(buffer), 0);
if(l < 1) break;
send(as, buffer, l, 0);
}
}
close(as);
close(s2);

Nach den zwei "close()"-Zeilen beendest du den Thread.

Leider ist die Verwendung von "bind()", "connect()" und "select()" nicht ganz so trivial, wie ich es hier dargestellt habe.

Da wirst du dich noch etwas einlesen müssen!


Antwort bewerten Vielen Dank für Deine Bewertung
Kommentar von thiesyy
29.05.2016, 13:31

Danke, Ich werde es gleich mal versuchen

0
Kommentar von thiesyy
29.05.2016, 13:37

Was wurde mit &adresse gemeint?

Die Lokale ip Des servers #1?
Die Lokale ip Des Servers #2 (Zu dem die weiterleitung soll)?
Oder Die IP von meinem Provider?

Oder soll ich es so lassen?

0

Was möchtest Du wissen?