TypeError: Connect() nimmt genau ein argument
Ich bin eine extrem einfache python-Skript öffnet einen TCP-socket und senden Sie einige JSON-Daten. (Ich bin neu in python)
Bin ich Erhalt einen Fehler unter, wenn ich das Skript ausführen:
Traceback (most recent call last):
File "JSONTest.py", line 17, in <module>
s.connect('10.12.0.30', 6634)
File "/usr/lib/python2.7/socket.py", line 224, in meth
return getattr(self._sock,name)(*args)
TypeError: connect() takes exactly one argument (2 given)
Mein Skript unter:
#Imports
import socket
import json
import time
data = "{\"method\": \"echo\",\"id\": \"echo\",\"params\": []}"
#Create socket
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
#Establish TCP session via IP address and port specified
s.connect('10.12.0.30', 6634)
#Send JSON to socket
s.send(json.dumps(data))
#Wait for response and print to console
result = json.loads(s.recv(1024))
#print str(result)
#Exit
s.close()
Ich habe die Dokumentation auf der socket-Bibliothek und connect() Listen die nur ein einzelnes argument, nämlich die Ziel-IP-Adresse gewünscht. So, meine Frage ist, wie kann ich das oben nicht, wo ich bin auch der Angabe meiner TCP-port, wenn die Methode connect() wird nicht lassen Sie mich Eingangs gibt es?
Ich bin auch offen für input auf bessere Wege, dies zu erreichen.
- In Bezug auf alternativen, welche Art von Umgebung, haben Sie Zugang zu?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Host und port muss ein Tupel.
Finden Sie im zweiten Teil des Beispiels in der Python-Socket-Dokumentation hier.
Rufen Sie
connect
mit einem argument: ein Tupel mit den host und den port:Überprüfen Sie diese Lösung mit Buchse.getaddrinfo:
Sollten Sie überprüfen Sie die version von python, da python socket.connect(.....) nimmt Tupel nach version 2.0 und höher, Folgen Sie bitte der python-Dokumentation für diese version hier ist die snip von der die Dokumentation für python 2.7: