我试图了解套接字,我无法设法连接到IP,端口。 这是我得到的剧本:
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
答案 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
来电的返回值。
此外,除非收到任何内容,否则您无法知道另一端是否已关闭连接。接收是了解连接是否已关闭的唯一可靠方法。
编辑:和其他人一样,你必须创建一个套接字对象。