Datein-Socket | Multitast-Socket | Socket übers internet

Sockets, TCP/IP, (XML-)RPC und ähnliche Themen gehören in dieses Forum
Antworten
welt-von-max
User
Beiträge: 19
Registriert: Dienstag 18. Januar 2011, 10:17

Hallo, ich beschäftige mich mit der Socketprogrammierung.
Kann auch einfache Socketverbindungen aufbauen ( die im selben netzwerk sind) und dann natürlich
Strings versenden und empfangen . Aber ich hab 3 Fragen :

1. Wie kann ich Datein über einen Socket versenden?
ich würde gerne bei der Socket lib bleibem weil ich dann auch noch den Aufbau lern

2. Empfang und versand gleichzeitig ?
Frage ist nicht ganz richtig , aber ich meine in einem Chat .. das man den nähsten Text eingeben kann zum verseden,
wärend der vom Partner empfangen wird

3. Eine verbindung im selben netzwerk kann ich schon machen ....aber wie bekomm ich die IP von PCs meinetwegen aus einer
Anderen Stadt ...
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

welt-von-max hat geschrieben:Kann auch einfache Socketverbindungen aufbauen ( die im selben netzwerk sind) und dann natürlich
Strings versenden und empfangen . Aber ich hab 3 Fragen :

1. Wie kann ich Datein über einen Socket versenden?
ich würde gerne bei der Socket lib bleibem weil ich dann auch noch den Aufbau lern
Eine Datei ist auch nur ein Byte-String, ich sehe nicht genau was du da für ein Problem siehst.
welt-von-max hat geschrieben:3. Eine verbindung im selben netzwerk kann ich schon machen ....aber wie bekomm ich die IP von PCs meinetwegen aus einer
Anderen Stadt ...
Wenn der andere Rechner hinter NAT ist: gar nicht. Wenn du einen Chat machen willst, dann ist es am einfachsten, wenn du das nicht Peer-to-Peer aufziehst, sondern einen Server mit einer öffentlichen IP-Adresse hast.
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
welt-von-max
User
Beiträge: 19
Registriert: Dienstag 18. Januar 2011, 10:17

Achsoo danke schön ....
naja ich seh das problem angenommen ich will ein bild versenden
kann ich mir nicht vorstellen wie das mit
....

s.send(bild)


und dann

c.revc(50000) gehen
soll weiß jemand, ob es da ein beispiel gibt ?
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Server:

Code: Alles auswählen

import socket, sys

with open(sys.argv[1], 'wb') as f:
    sock = socket.socket()
    sock.bind(('localhost', 4223))
    sock.listen(1)
    conn, addr = sock.accept()
    while True:
        data = conn.recv(1024)
        f.write(data)
        if not data:
            break
    conn.close()
Client:

Code: Alles auswählen

import socket, sys

with open(sys.argv[1], 'rb') as f:
    conn = socket.create_connection(('localhost', 4223))
    conn.send(f.read())
    conn.close()
Also quasi so wie es in der Dokumentation des Socket-Moduls steht.
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
Antworten