2015-02-06 50 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)元組一起使用。

相關問題