连接时出现错误 - 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'
希望有人能知道答案。
附注:我使用的是Python 2.7!
- Stian
3 个回答
0
难道连接时传入的参数不是一个元组吗?
socket.connect((ip, port))
还要检查一下send
调用的返回值。
另外,只有在你接收到数据时,才能知道对方是否关闭了连接。接收数据是确认连接是否关闭的唯一可靠方法。
编辑:就像其他人说的,你需要创建一个套接字对象。
2
你首先需要创建一个套接字对象:
s = socket.socket()
s.connect((ip, int(port))
而不是:
socket.connect(ip, port)
然后使用 s.send
等等。
4
你现在是在对模块调用 .connect()
,而不是对一个对象调用。你需要先创建一个套接字对象,通常是通过 socket.socket()
来实现的。然后,你可以在返回的那个对象上调用 .connect()
。
s = socket.socket()
s.connect((ip, int(port))