2015-02-06 51 views
1

我正尝试在Linux系统上使用Python连接到使用UDP套接字在特定IP和端口号上监听的Windows系统。在具有特定IP和端口的Linux计算机上使用Python无法获得原始UDP套接字

我知道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() 
+0

你会得到哪个错误? – 2015-02-06 18:21:42

+0

s.connect(server_address) 文件“”,第1行,连接 TypeError:参数1必须是字符串,而不是元组 – user3470688 2015-02-06 18:30:18

+0

请将该关键信息添加到问题中。 – 2015-02-06 18:35:45

回答

2

你只需要读取错误:

s.connect(server_address) File "<string>", line 1, in connect TypeError: argument 1 must be string, not tuple 

直接在您的通话connect()点你。现在将其与官方python documentation进行比较。

我注意到你想生成一个UDP套接字,但使用RAW作为类型而不是DGRAMRAW会为您提供原始的网络协议级访问(即比UDP更低的级别),因此不能与(HOST,PORT)元组一起使用。

相关问题