2016-10-24 9 views
0

返り値os socket.getaddrinfoからPythonサーバーソケットを作成して、5タプルのシーケンスを返す(family, socktype, proto, canonname, sockaddr)
これは私のコードです。名前付きタプルの問題からソケットを作成する

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 

socket.getaddrinfoはタプルとしてタプル

答えて

0

socket.getaddrinfoもし戻っ(family, socktype, proto, canonname, sockaddr)を返すいただきました、おそらく問題は、まだそう、あなたはこのタプルを解凍するために*を使用する必要があります。

socket_info = sock_info_tuple._make(*socket.getaddrinfo('127.0.0.1',80,socket.AF_INET,socket.SOCK_STREAM,socket.IPPROTO_TCP)) 
関連する問題