1
在一個網絡服務器,我想創建用於查找和定位,如果一個Web服務器是建立一個運行在某處的本地網絡內的腳本的名稱。我的想法是(不是最快的)。檢查連接到本地網絡的所有IP,並嘗試連接到Web服務器正在監聽的端口(假設它將在8000上監聽)。如果你發現它停止並返回IP。這是基本的想法。我寫了我的代碼,但沒有完全測試它,因爲我的環境此刻只有一個PC:)....我確實在我的電腦上運行了網絡服務器,但它發現它。 :)獲取連接我的局域網
代碼看起來像
local_host_ip = socket.gethostbyname(socket.gethostname())
web_client_socket = socket.socket()
try:
if web_client_socket.connect_ex((local_host_ip,8000)) == 0:
print 'Found rhombus server'
web_client_socket.close()
return local_host_ip
except IOError:
pass
for ip in [ip_address for ip_address in socket.gethostbyname_ex(socket.gethostname())[2] if
ip_address != local_host_ip]:
print 'Attempting to find server'
try:
if web_client_socket.connect_ex((local_host_ip,8000)) == 0:
print 'Found rhombus server'
return ip
except IOError:
pass
return 'Rhombus server not found'
我已經嘗試了類似的代碼,但在那裏檢查,如果Web服務器是在8000端口一邊收聽(看是否我的想法是工作),它做到了。最初我想知道的是,如果有更快更好的方法,其次,我可以獲得網絡服務器的名稱嗎?我一直在想,即使這個代碼在兩臺Web服務器(每臺機器都是不同的機器)都在8000下運行時會有什麼效果?
TY @vinaut。我會嘗試它,然後我會讓你變綠(這是接受你的答案):) – Apostolos