当我尝试连接-python时,Socket给我错误

时间:2011-12-04 00:45:59

标签: python sockets

我试图了解套接字,我无法设法连接到IP,端口。 这是我得到的剧本:

stian的套接字测试工具

import socket

print "send request to website to check if sockets work right"
ip = raw_input("website ip: ")
port = raw_input("website port: ")
socket.connect(ip, port)
tosend = "this is a test"
currVal = 0
while currVal < 1:
    socket.send(tosend)
    print "1 sockets sent..."
    currrVal += 1
print "Done sending sockets. This hopefully worked"

python代码有什么问题吗? 这只适用于ipv4或ipv6吗?或者两者兼有吗?

错误即时收集:

C:\Users\Swipper\Documents\Python\sockets>sock.py
send request to website to check if sockets work right
website ip: 127.0.0.1
website port:
Traceback (most recent call last):
  File "C:\Users\Swipper\Documents\Python\sockets\sock.py", line 8, in <modu
le>
    socket.connect(ip, port)
AttributeError: 'module' object has no attribute 'connect'

希望有人知道答案。

PS:我使用python 2.7!

-stian

3 个答案:

答案 0 :(得分:4)

您在模块上调用.connect()而不是对象。您必须首先实例化一个套接字对象,这通常是通过socket.socket()实现的。然后,您可以在返回的对象上调用.connect()

s = socket.socket()
s.connect((ip, int(port))

答案 1 :(得分:2)

您必须先创建一个套接字对象:

s = socket.socket()
s.connect((ip, int(port))

而不是:

socket.connect(ip, port)

然后使用s.send

答案 2 :(得分:0)

连接调用的参数不应该是一个元组吗?

socket.connect((ip, port))

并检查send来电的返回值。

此外,除非收到任何内容,否则您无法知道另一端是否已关闭连接。接收是了解连接是否已关闭的唯一可靠方法。

编辑:和其他人一样,你必须创建一个套接字对象。