dup2

Sockets, TCP/IP, (XML-)RPC und ähnliche Themen gehören in dieses Forum
Antworten
gast

Hi ich hab folgenden code:

Code: Alles auswählen

srv=socket(AF_INET,SOCK_STREAM)
 srv.bind(("",12345))
srv.listen(1)
client = srv.accept()
os.dup2(client,0)
os.dup2(client,1)
os.dup2(client,2)
und er geht net weil dup2 eine int variable haben will, und client es nicht ist, aber was muss ich sonst fuer ein Variable übergeben ?
Dookie
Python-Forum Veteran
Beiträge: 2010
Registriert: Freitag 11. Oktober 2002, 18:00
Wohnort: Salzburg
Kontaktdaten:

Hi,

versuchs mal mit

Code: Alles auswählen

os.dup2(client[0].fileno(),0)
Ich habs nicht getestet, aber laut Beschreibung gibt socket.accept() ein tuple zurück, dessen erster Wert wieder ein socket ist, und mit der methode fileno() bekommst Du den filedescriptor dieses sockets.


Gruß

Dookie
guest

hab auch sowieso in der art versucht, aber python meint nur bad file descriptor :/

die variable client sieht so aus:

socket._socketobject object at 0x00904600, ('127.0.0.1', 1842))

das erste ist das socket object, dann die ip vom clienten der connected und der remot port.
geust

war verdreht mit os.dup2(0,client[0].fileno()) scheint zu gehen. danke :D
guest

hm wieso gehts umgekehrt ?

os.dup2(oldfd,newfd) # Duplicate oldfd to newfd

wenn fuer oldfd , 0 steht und fuer newd client[0].fileno() gehts, aber ich will ja den socket descriptor zu stdin machen. Dass alles was an stdin,sterror,stdut durch den socket geht. :(
Gast

mit 2.2 gehts mit python 2.3 nicht :?:
Antworten