网络编程--Address already in use 问题
生活随笔
收集整理的這篇文章主要介紹了
网络编程--Address already in use 问题
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
初學socket編程,好容易調好一個雙向tcp的簡單通信,一直有些不舒服的是,當程序結束后,再次運行時
總會perror拋出Address already in use的問題
網上找了找資料,
bind 普遍遭遇的問題是試圖綁定一個已經在使用的端口。該陷阱是也許沒有活動的套接字存在,但仍然禁止綁定端口(bind 返回 EADDRINUSE),它由 TCP 套接字狀態 TIME_WAIT 引起。該狀態在套接字關閉后約保留 2 到 4 分鐘。在 TIME_WAIT 狀態退出之后,套接字被刪除,該地址才能被重新綁定而不出問題。
等待 TIME_WAIT 結束可能是令人惱火的一件事,特別是如果您正在開發一個套接字服務器,就需要停止服務器來做一些改動,然后重啟。幸運的是,有方法可以避開 TIME_WAIT 狀態。可以給套接字應用 SO_REUSEADDR 套接字選項,以便端口可以馬上重用。
于是結合man手冊,通過以上函數,使得端口可以立即重用
總結
以上是生活随笔為你收集整理的网络编程--Address already in use 问题的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 学会用core dump调试程序错误
- 下一篇: 将 Win32 程序移植到 Linux