簡體   English   中英

Unix套接字編程:服務器關閉后端口未解除綁定

[英]Unix sockets programming: port is not getting unbound after server shutdown

我正在研究Unix套接字編程。 我制作了一個時間服務器來發送原始時間數據,並為其創建了一個客戶端,該客戶端接收該數據並將其轉換為本地時間。

當我運行服務器時,將一個客戶端連接到該服務器(這將導致它們都執行其工作並關閉),然后重新運行服務器,在bind()調用中得到errno = 98。 我必須更改服務器源代碼中的端口,然后重新編譯以消除該錯誤。 當我運行服務器並再次連接到服務器時,就可以了,在再次重新運行后,情況再次發生。 但是我可以更改回先前的端口。 因此,每次調試運行時,我都從端口1025跳到1026,反之亦然(這非常頻繁,因此有點煩人)。

它的工作方式如下:服務器打開偵聽器套接字,將其綁定,偵聽,接受到數據套接字的連接,向其寫入time_t,關閉數據套接字,然后關閉偵聽器套接字。 客戶端打開套接字,連接到服務器,讀取數據並關閉套接字。

有什么問題?

提前致謝。

插座在關閉后會有很長的時間。 在執行應用程序后,它們可能會使端口占用一點時間,因此,它們可能會發送任何未發送的數據。 如果等待足夠長的時間,該端口將被釋放,並且可以再次用於另一個套接字。

有關Socket Lingering的更多信息,請查看:

http://www.developerweb.net/forum/archive/index.php/t-2982.html

errno 98-地址已在使用中

調查SO_REUSEADDR

Beej網絡編程指南

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM