我正在尝试使用 Linux 系统上的 Python 连接到使用 UDP 套接字监听特定 IP 和端口号的 Windows 系统。
我知道 IP 和端口号,但不知道任何主机名。 但我认为连接并发送一条小消息会很容易。 无论我如何指定地址,我都会收到错误消息。
import socket
def openSocket():
HOST = "1.1.1.1"
PORT = 111
server_address = (HOST, PORT)
s = socket.socket(socket.AF_PACKET, socket.SOCK_RAW, socket.htons(ETH_P_ALL) )
s.connect(server_address)
s.sendAll("HELLO")
s.close()
openSocket()
最佳答案
你只需要阅读错误:
s.connect(server_address) File "<string>", line 1, in connect TypeError: argument 1 must be string, not tuple
它直接指向您的 connect()
调用。现在将其与官方 python documentation 进行比较.
我注意到您想要生成 UDP 套接字,但使用 RAW
作为类型而不是 DGRAM
。 RAW
将为您提供原始网络协议(protocol)级别的访问权限(即低于 UDP 的级别),因此不能与 (HOST,PORT)
元组一起使用。
关于python - 无法在具有特定 IP 和端口的 Linux 机器上使用 Python 获取原始 UDP 套接字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28372060/