錯誤指示很明確:通訊埠被占用了,導致通訊無法進行。
但為什麼埠被占用了呢?什麼埠被占用了?
這裡其實有乙個大前提:你的程式中有沒有指定socket通訊埠?
如果指定了,解決辦法很簡單,每次通訊完成手動釋放就行了。下次通訊重新建立連線。
如果沒有指定,說明以下幾點(可能你命中的是其中一點):
1、你的伺服器開啟的埠數太少;
2、連線釋放等待時間太長;
3、你的socket通訊併發量太大。
原因找到了,解決起來也就簡單了,針對1、2兩點,我們修改伺服器配置就行了。
如果你的伺服器是windows2003或xp,預設埠只開到5000,而且超時等待預設是240秒(這裡有官方說明:我們只需把伺服器端口全開啟,並且根據自己的情況調整超時時間。
具體操作:
1、開啟登錄檔(執行命令:regedit)
2、找到登錄檔節點:hkey_local_machine\system\currentcontrolset\services\tcpip\parameters
3、新增2項(如果已存在就修改項值),值對應的都是10進製數字
maxuserport=65534 (埠數設到最大)
tcptimedwaitdelay=5 (超時等待是5秒,根據個人需要)
4、重啟伺服器
搞定!
每個套接字位址error
套接字問題 2 根據pid,查詢占用埠的應用,這裡的pid為 8672,查詢命令如圖 3 殺死對應的pid,taskkill pid 8672 f 4 是不是殺不掉,哈哈哈哈 5 根據步驟2,在任務管理器裡,直接結束程序,由於我已經結束掉了,所以圖里沒有 當然你可能在任務管理器裡,還是結束不掉對應程...
解決通常套接字位址只允許使用一次的解決歷程
1 cmd到命令列,執行netstat ano,埠號不管換哪個都會查到pid 4,任務管理器中找到pid 4,發現是system,不能停掉,可能導致系統不穩定,接下來還會嘗試更多的方法 後來查到我是遇到坑爹事件了,查到的解決方式如下 win7的80埠預設是被system程序占用的。用如下方法可以解決...
套接字和位址
在客戶端 發起連線之前,伺服器端先進行初始化 bind int fd,void addr,socklen t len 一旦三次握手完成,服務端和客戶端建立連線,就進入了資料傳輸過程 當雙方完成互動後,需要執行close函式,作業系統核心通過原來的鏈結鏈路向伺服器端傳送乙個fin包,伺服器收到後執行被...