多個程序能否監聽同乙個埠號

2021-09-24 01:23:29 字數 521 閱讀 1397

我們都知道socket是網路上兩個程序之間的雙向通訊鏈路, 即

根據unix網路程式設計中的知識可知,服務端監聽乙個埠會經歷:

1、根據套接字型別(ipv4,ipv6等)建立套接字socket

2、將套接字bind繫結到具體的網路位址和埠號

3、呼叫listen開始在這個套接字上進行監聽。

unix提供了乙個介面setsockopt()可以在bind之前設定套接字選項,其中就包括reuseaddr這個選項,表明可以多個程序復用bind函式中指定的位址和埠號。

由此可知多個應用(程序),包括同乙個應用多次,都是可以繫結到同乙個埠進行監聽的。對應地c++、net等高階語言也都提供了對應的介面。

從一些例子也可以看出,比如有時候你在伺服器上執行netstat -ano可能會發現同乙個應用程式在同乙個埠上有多個監聽,這是因為一些服務端應用程式可能會異常退出或者沒有完全釋放套接字,但是需要在重新啟動時還能夠再次監聽同乙個埠,所以需要能夠具備重複監聽同乙個埠的能力,因此也出現上述情形。

埠號,乙個埠號是否可以被多個程序使用?

1.埠號的作用 埠號可以用來標識同乙個主機上通訊的不同應用程式,埠號 ip位址就可以組成乙個套接字,用來標識乙個程序 2.埠號的應用場景 在tcp ip協議中,用 源ip位址 目的ip位址 源埠號 目的埠號 協議號 ip協議的協議號為4,tcp的協議號為6 這樣的乙個五元組來標識乙個通訊,通訊的雙方...

多個消費者監聽同乙個佇列

消費者1 如前一章 消費者2 與消費者1 完全相同 注意 此時,消費者1和2監聽在同乙個佇列上,佇列會以輪訓的方式將10個訊息分別交給消費者1和2進行處理。但是這種情況下,如果消費者1處理的訊息比較繁重,而消費者2處理的訊息比較輕鬆地話,實際上應該讓消費者2多處理一些訊息,在消費者 新增中如下 ba...

多個專案如何共用同乙個外網IP埠?

今天被問到這樣乙個問題 q 如果只有乙個外網埠,如何使用這乙個埠跑多個專案?a 使用nginx 目前我只會用這個方法,哈哈哈 加入訪問的ip為 172.168.27.215 8000 我們可以讓 172.168.27.215 8000 proa 去訪問a專案,a專案占用7777埠 172.168.2...