Socket Programmierung

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
py4fun
User
Beiträge: 16
Registriert: Donnerstag 3. Januar 2013, 20:07

Hallo, ich habe mich einmal an Python Socketprogrammierung herangewagt mit der Seite http://openbook.galileocomputing.de/pyt ... 20_001.htm
Und zwar habe ich mich an einem kleinem Remotetool versucht. Dazu benutze ich TCP. Das klappt bei mir zuHause auch schon gut. Nur wie schaffe ich es jetzt, dass ich mich mit Pcs Verbinden kann, die nicht in meinem lokalen Netzwerk sind. Ich verstehe es nicht.

Code:

Code: Alles auswählen

# -*- coding: cp1252 -*-
#RemoteServer
import socket, os

#----------Server & Cleint binden----------
sock = socket.socket (socket.AF_INET, socket.SOCK_STREAM) #socket einbinden
sock.bind (("", 50001)) #Clients binden
sock.listen (1) #Auf Verbindung mit Clients warten --> max. 1
conn, addr = sock.accept() #Verbindung aktzeptieren
print addr

#----------Kommandos ausführen----------
while True:
    try:
        command = conn.recv(1024) #Nachricht des Clients erwarten
        if command == "EXIT": #beenden?
            conn.close() #verbindung zum Client beenden
            sock.close() #socket beenden
            print ">> Beendet..."
            break
        else:
            print ">> Empfangen: " + command
            command_run = os.popen (command).read() #ausführen
            if command_run:
                conn.send(command_run)  #senden
                print ">> Gesendet: " + command_run
            else:
                conn.send ("Keine Ausgabe") #senden
                print ">> Gesendet: Keine Ausgabe"

    except:
        continue

Code: Alles auswählen

# -*- coding: cp1252 -*-
#RemoteClient
import socket, os

#----------Client----------
while True:
    try:
        ip = raw_input ("IP-Adresse: ") #Abfrage der IPv4 des Servers
        sock = socket.socket (socket.AF_INET, socket.SOCK_STREAM) #socket einbinden
        sock.connect ((ip, 50001))
        break
    except:
        print ">> Server nicht online"
        continue

#----------CommandBox----------
while True:
    try:
        entry = raw_input ("Fortfahren(Y\N): ")
        if entry == "Y" or entry == "y":
            command = raw_input (">>> ") #Kommando Eingabe
            try:
                sock.send (command) #Kommando senden
                print ">> Gesendet: " + command
            except:
                print ">> Senden fehlgeschlagen"
            command_run = sock.recv (1024) #Auf Antwort des Servers warten
            print ">> Empfangen: " + command_run
        else:
            sock.send ("EXIT")
            sock.close()
            print ">> Beendet..."
            break
    except:
        print ">> Error"

Danke schonmal :)

Gruß Py4Fun
Zuletzt geändert von Anonymous am Freitag 4. Januar 2013, 15:42, insgesamt 1-mal geändert.
Grund: Quelltext in Python-Code-Tags gesetzt.
Benutzeravatar
sparrow
User
Beiträge: 4187
Registriert: Freitag 17. April 2009, 10:28

Definiere "PC außerhalb meines Netwerks"

Du meinst mit einem anderen PC, der nicht direkt mit dem Internet verbunden ist sondern hinter einem Router sitzt?
In diesem Fall muss im Zielnetzwerk eine Portweiterleitung eingerichtet werden.
Die Stichworte "Portweiterleitung", "Router" und "NAT" sollten sich bei Google weiterbringen.
py4fun
User
Beiträge: 16
Registriert: Donnerstag 3. Januar 2013, 20:07

Ok danke :D ich werde mal googlen
Antworten