python - 无法在具有特定 IP 和端口的 Linux 机器上使用 Python 获取原始 UDP 套接字

标签 python linux sockets

我正在尝试使用 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 作为类型而不是 DGRAMRAW 将为您提供原始网络协议(protocol)级别的访问权限(即低于 UDP 的级别),因此不能与 (HOST,PORT) 元组一起使用。

关于python - 无法在具有特定 IP 和端口的 Linux 机器上使用 Python 获取原始 UDP 套接字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28372060/

相关文章:

python - Django 是否提供任何内置方式来更新 PostgreSQL 自动增量计数器?

python - 名称未定义,功能定义错误?

c - 在 Linux 中打开文件时遇到问题

c - 套接字 send() 可重复

python - 无法安装 librosa python,如何卸载 llvmlite?

linux - 如何从 HDI 集群获取工作线程数、核心数、内存数

linux - gzip: stdin: 不是 gzip 格式 tar: Child returned status 1 tar: Error is not recoverable: exiting now

python - 如何使用套接字将文件从flutter应用程序发送到python服务器

LabVIEW 中的套接字

python - 通过将其他列与字典匹配来更改数据框的列