2016-09-10 4 views
-1

単純なUDP接続を作成しようとしていますが、毎回悲惨に失敗します。私はPyCharmでPython 3.5.2を使用しています。ソケット輸入AF_INETから 輸入ソケット 、SOCK_DGRAMUDPソケットを使用するとgetsockaddarg()エラーが発生する

ip = tuple(input('Enter an ip\n')) 
#time = int(input('How long? In seconds \n')) 
msg = 'Hello' 
addr = (ip, 80) 

def connection(): 
    sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM) 
    sock.bind(ip) 
    sock.sendto(msg, addr) 


connection() 

私が手にエラーがある:

Traceback (most recent call last): 
    File "A:/PycharmProjects/udp.py", line 15, in <module> 
    connection() 
    File "A:/PycharmProjects/udp.py", line 11, in connection 
    sock.bind(ip) 
TypeError: getsockaddrarg() takes exactly 2 arguments (14 given) 

Process finished with exit code 1 

答えて

0

tupleを呼び出すと、反復可能(入力文字列)内の個々の文字を含むタプルを構築します。

>>> tuple('127.0.0.1') 
('1', '2', '7', '.', '0', '.', '0', '.', '1') 

tuple入力を使用しないでください:その上

ip = input('Enter an ip\n') 
msg = 'Hello' 
addr = (ip, 80) 
とバインド:返信用

sock.bind(addr) 
+0

感謝。 ファイル "A:/PycharmProjects/udp.py"、ライン17、 Connection() ファイル "A:/PycharmProjects/udp.py"ファイルは、次のようになります。 (WinError 10049)要求されたアドレスがそのコンテキストで有効ではない ' – brexling

+0

OK、明らかにsock.bindはローカル接続のみです(my悪い)。私は今sock.connectを使用しており、それはうまく動作しているようだ:) – brexling

関連する問題