各位,我的csharp應用里面用到httpserver開始一個埠。
在系統中,我希望bat命令關閉這個程式 (taskkill)然后再重啟這個程式,
結果老提醒程式錯誤,因為埠已經被占用,也就是說bat命令關閉這個程式的時候,埠沒有關閉。
請問,什么bat命令能在關閉程式的時候,關閉程式使用的埠。 謝謝。
uj5u.com熱心網友回復:
Application.Restart() 試試uj5u.com熱心網友回復:
一個服務系結了本地的埠,當服務正常停止時,埠應被釋放。但是你使用了 taskkill,屬于例外停止,那么該埠不會被立即釋放,需要等待一段時間才能釋放,因為作業系統需要為例外的操作做一些善后作業,保證網路上的殘留 TCP 資料包能夠被正確處理,避免客戶端重連帶來會話錯誤。正常應使用 net stop 命令 或 sc 命令來停止服務。uj5u.com熱心網友回復:
遇到的問題:在重新啟動tomcat服務時,啟動失敗,顯示的資訊大概為:Error running 'cus_manager_system': Unable to open debugger port (127.0.0.1:52022): java.net.SocketException "socket closed"
(英文大概類似于這種,失敗原因就是:你要使用到的埠號被占用,我的錯誤是某埠號被navicat占用了)
一:解決方法:
1. 找到占用此埠的行程號:netstat -aon|findstr "59207"
2. 查看此行程所對應的應用程式:tasklist|findstr "1396"
3. 然后關閉掉此應用程式,待tomcat成功啟動后,再打開navicat(navicat是怎么占用的不知道)
二:有時會出現一種情況時:埠被占用,用上面的第一步查詢時,卻查不到任何占用此埠的應用程式;
此時,可以采用下邊的方法,強制關閉你的java服務,打開任務管理器,如下圖:
然后,右鍵關閉此行程,(按下鍵盤上的 j 找到下一個java服務,直到關閉所有),再次運行服務,就可以正常啟動了;
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/6793.html
標籤:C#
上一篇:將一個自定義控制元件封死在視窗里
