python在windows 比linux 慢,爲什麼Windows上的python套接字掃描比在linux上慢很多?

我試過在網上搜索不同的python文檔,論壇和其他人的問題,但我還沒有找到任何人有這個相同的問題。爲什麼Windows上的python套接字掃描比在linux上慢很多?

我的腳本的典型樣子是我將創建一個套接字連接,嘗試連接到1-9999端口,並且只會在端口打開時告訴我。當我在Windows上運行它時,在移動到下一個端口之前需要1秒鐘的時間才能掃描一個端口(每個端口60個端口/米〜16.5米)。當我在linux上運行相同的腳本時,它將非常快速地遍歷所有9999端口,同時仍然返回相同的期望結果。

我一直希望能夠構建交叉兼容的工具,但是看起來linux 只是在我的網絡需求方面更好的操作系統?我有兩個在我的處置,所以我不介意使用一個在另一個。我只想知道是否有任何可以使端口掃描在兩個操作系統上都同樣快的操作,否則我不會花費太多的時間在Windows上進行構建。

無論我在哪個網絡,速度的差異都是一樣的。

我的問題是:

•爲什麼在給定相同函數的情況下,與Windows相比,windows的性能如此不同?

•有沒有什麼辦法可以像使用linux一樣快速地使用套接字掃描端口?

- 編輯 -

這裏的一塊,我用它來檢查端口

def whole_scan(Host_):

service = ''

host = Host_

max_port = 9999

min_port = 1

def scan_host(host, port, r_code = 1):

try:

s = socket(AF_INET, SOCK_STREAM)

code = s.connect_ex((host, port))

if code == 0:

r_code = code

s.close()

except Exception, e:

pass

return r_code

hostip = gethostbyname(host)

for port in range(min_port, max_port):

try:

response = scan_host(host,port)

if response == 0:

try:

service = getservbyport(port)

except Exception, e:

service = 'n/a'

print(" |--port: %d\t%s" % (port,service.upper()))

except Exception, e:

pass

我也驗證了我的防火牆被禁用,並且增加價值到我的註冊表來禁用連接上的限制表現沒有變化。我在Windows 10上。

2017-09-19

saniboy

+0

由於UNIX是專爲網絡和網絡是專爲UNIX,任何品牌的UNIX,包括基於Linux的系統,可以說是在選擇時更有優勢網絡平臺。這就是說,這裏可能還有別的東西在工作。你的窗口盒子是否啓用了防火牆?它可以阻止通知(未過濾)封閉端口的RST,ACK分組。 –

+0

@spectras我的筆記本電腦上的AV是禁用的,netsh advfirewall顯示allprofiles顯示所有防火牆都關閉。我想認爲必須有一些東西,但是我很難找到它 –

+0

你能提供一個簡化的,自包含的基準測試和兩個操作系統的數字嗎?有很多方法可以進行端口掃描(阻塞vs非阻塞,並行vs順序,連接vs syn),所以最好有一個具體的例子加上實際的數字。 –

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值