2016-10-24 2 views
0

Am einen Python-Server-Socket von dem Rückgabewert o socket.getaddrinfo zu schaffen, die eine Sequenz von 5-Tupel gibt (family, socktype, proto, canonname, sockaddr)
Dies ist mein Code.Sockets Schaffung von einer benannten Tupel Ausgabe

import socket 
import collections 

sock_info_tuple = namedtuple('sock_info_tuple', 'family type proto cannon sockaddr_tuple') 
socket_info = sock_info_tuple._make(socket.getaddrinfo('127.0.0.1',80,socket.AF_INET,socket.SOCK_STREAM,socket.IPPROTO_TCP)) 

TypeError         Traceback (most recent call last) 
<ipython-input-90-b04233a8e38d> in <module>() 
    5 #get the socket info 
    6 sock_info_tuple = namedtuple('sock_info_tuple', 'family type proto cannon sockaddr_tuple') 
----> 7 socket_info = sock_info_tuple._make(socket.getaddrinfo('127.0.0.1',80,socket.AF_INET,socket  .SOCK_STREAM,socket.IPPROTO_TCP)) 
    8 
    9 #create the server scket and pass the arguments 

<string> in _make(cls, iterable, new, len) 

TypeError: Expected 5 arguments, got 1 

so was ist wohl das Problem und doch ist die socket.getaddrinfo kehrt das Tupel

Antwort

0

Wenn socket.getaddrinfo kehrt (family, socktype, proto, canonname, sockaddr) als Tupel, sollten Sie * verwenden diese Tupel auszupacken.

socket_info = sock_info_tuple._make(*socket.getaddrinfo('127.0.0.1',80,socket.AF_INET,socket.SOCK_STREAM,socket.IPPROTO_TCP)) 
Verwandte Themen