尝试在Python中设置一些基本的套接字代码(好吧,Jython,但我认为这不相关)。
import socket
class Foo(object):
def __init__(self):
#some other init code here
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.connect("localhost", 2057)
s.send("Testing 1,2,3...")
data = s.recv()
s.close()
print data
它告诉我:
s.connect("localhost", 2057) File "<string>", line 1, in connect TypeError: connect() takes exactly 2 arguments (3 given)
我觉得一些非常简单的感觉就是盯着我看,但我不知道我做错了什么。
答案 0 :(得分:12)
您必须将元组传递给connect()
方法。
s.connect( ('localhost', 2057) )
预期的第一个(隐含)参数是self
,第二个是元组。
答案 1 :(得分:9)
你 传递三个参数! s
作为隐含的第一个参数传递,而您指定的其他两个参数是第二个和第三个参数。
现在,令人不安的原因是因为socket.connect()
只接受一个参数(当然,如果计算隐式实例参数,则为两个):see the docs。
答案 2 :(得分:4)
答案 3 :(得分:4)
套接字connect
函数用于将套接字连接到远程地址。对于IP套接字,地址是一对(主机,端口)
所以你应该使用:
s.connect( ("localhost", 2057) )
答案 4 :(得分:3)
使用:
s.connect(("localhost", 2057))
答案 5 :(得分:0)
socket.connect只接受1个参数,即地址,如果自己计数,则接受2。 地址格式在第四段http://docs.python.org/library/socket.html
中说明