日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

SO_REUSEADDR

發布時間:2023/12/4 编程问答 32 豆豆
生活随笔 收集整理的這篇文章主要介紹了 SO_REUSEADDR 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

轉載:

http://www.cppblog.com/aa19870406/archive/2012/07/12/183018.html

http://www.cnblogs.com/mydomain/archive/2011/08/23/2150567.html

?

編寫 TCP/SOCK_STREAM 服務程序時,SO_REUSEADDR到底什么意思?這個套接字選項通知內核,如果端口忙,但TCP狀態位于 TIME_WAIT ,可以重用端口。如果端口忙,而TCP狀態位于其他狀態,重用端口時依舊得到一個錯誤信息,?指明"地址已經使用中"。如果你的服務程序停止后想立即重 啟,而新套接字依舊使用同一端口,此時SO_REUSEADDR 選項非常有用。必須意識到,此時任何非期望數據到達,都可能導致服務程序反應混亂,不過這只是一種可能,事實上很不可能。?

?

1、一般來說一個端口釋放后會等待兩分鐘之后才能再被使用SO_REUSEADDR是讓端口釋放后立即就可以被再次使用。

??? SO_REUSEADDR用于對TCP套接字處于TIME_WAIT狀態下的socket才可以重復綁定使用。server程序總是應該在調用bind()之前設置SO_REUSEADDR套接字選項。TCP,先調用close()的一方會進入TIME_WAIT狀態

2、SO_REUSEADDRSO_REUSEPORT

SO_REUSEADDR提供如下四個功能:

??? SO_REUSEADDR允許啟動一個監聽服務器并捆綁其眾所周知端口即使以前建立的將此端口用做他們的本地端口的連接仍存在。這通常是重啟監聽服務器時出現若不設置此選項則bind時將出錯。

??? SO_REUSEADDR允許在同一端口上啟動同一服務器的多個實例只要每個實例捆綁一個不同的本地IP地址即可。對于TCP我們根本不可能啟動捆綁相同IP地址和相同端口號的多個服務器。

??? SO_REUSEADDR允許單個進程捆綁同一端口到多個套接口上只要每個捆綁指定不同的本地IP地址即可。這一般不用于TCP服務器。

??? SO_REUSEADDR允許完全重復的捆綁:當一個IP地址和端口綁定到某個套接口上時還允許此IP地址和端口捆綁到另一個套接口上。一般來說這個特性僅在支持多播的系統上才有而且只對UDP套接口而言(TCP不支持多播)。

SO_REUSEPORT選項有如下語義:

??? 此選項允許完全重復捆綁但僅在想捆綁相同IP地址和端口的套接口都指定了此套接口選項才

??? 如果被捆綁的IP地址是一個多播地址則SO_REUSEADDRSO_REUSEPORT等效。

使用這兩個套接口選項的建議:

??? 在所有TCP服務器中在調用bind之前設置SO_REUSEADDR套接口選項;

當編寫一個同一時刻在同一主機上可運行多次的多播應用程序時設置SO_REUSEADDR選項并將本組的多播地址作為本地IP地址捆綁。

??? if (setsockopt(fd, SOL_SOCKET, SO_REUSEADDR,

?? (const void *)&nOptval , sizeof(int)) < 0) ...

??? Q:編寫 TCP/SOCK_STREAM 服務程序時,SO_REUSEADDR到底什么意思?

??? A:這個套接字選項通知內核,如果端口忙,但TCP狀態位于 TIME_WAIT ,可以重用端口。如果端口忙,而TCP狀態位于其他狀態,重用端口時依舊得到一個錯誤信息,指明"地址已經使用中"。如果你的服務程序停止后想立即重啟,而新套接字依舊使用同一端口,此時SO_REUSEADDR 選項非常有用。必須意識到,此時任何非期望數據到達,都可能導致服務程序反應混亂,不過這只是一種可能,事實上很不可能。

??? 一個套接字由相關五元組構成,協議、本地地址、本地端口、遠程地址、遠程端口。SO_REUSEADDR 僅僅表示可以重用本地本地地址、本地端口,整個相關五元組還是唯一確定的。所以,重啟后的服務程序有可能收到非期望數據。必須慎重使用 SO_REUSEADDR 選項。【2】

?

1http://topic.csdn.net/u/20090103/16/a0414edb-b289-4c72-84da-39e155e8f4be.html

2

以下博客對這個問題進行了對答式的解答:

http://blog.sina.com.cn/s/blog_53a2ecbf010095db.html

3http://www.sudu.cn/info/html/edu/20050101/296180.html

創作挑戰賽新人創作獎勵來咯,堅持創作打卡瓜分現金大獎

總結

以上是生活随笔為你收集整理的SO_REUSEADDR的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。