1. 程式人生 > >解決System程序佔用80埠

解決System程序佔用80埠

     專案開發管理端後臺程式,要換成JFinal框架,在搭建Demo框架完成後,Run As 專案中的Config檔案後,提示80埠被佔用。

    好了,問題簡單粗暴,解決80埠就OK了。

    真的簡單?Really粗暴?No! 下面是複雜的解決過程……

    1、先看看什麼是80埠,它和8080、8001等埠有何區別?

    80埠是為HTTP(HyperText Transport Protocol)即超文字傳輸協議開放的,此為上網衝浪使用次數最多的協議,主要用於WWW(World Wide Web)即全球資訊網傳輸資訊的協議。可以通過HTTP地址(即常說的“網址”)加“:80”來訪問網站,因為瀏覽網頁服務預設的埠號

都是80,因此只需輸入網址即可,不用輸入“:80”了。--百度百科 

        也就是說,只要我們想上網,就必須開放80埠。在有的解決80埠被佔用的方案中,發現有的文章建議關閉Http Service,簡直是Kidding me……

        8080、8001等埠其實本質上沒什麼區別,而且它們本身無實際意義,只是用於代理伺服器埠來代理服務,如tomcat、nginx、IIS等。大部分服務提供方都預設使用8080埠用於WWW代理服務,因此經常會發現8080埠被佔用的情況。但我們可以通過配置檔案修改,如改成8001等。

        2、如何解決的端口占用?

        首先,看看到底是誰佔用了80埠:檢視80端口占用方法

。發現是System佔用了,System是什麼鬼?系統程序啊!

        頓時有些懵~ 好吧,繼續go,在工作管理員中找到System程序後,選中,結束程序,發現並沒有什麼效果。

        百度,在dos視窗結束該程序的方法,依然無效。後來查了一下System程序,發現他是Windows頁面記憶體管理程序,擁有0級優先權,沒有它系統無法啟動。 也就是說,System程序是無法關閉的,如果你強行結束system程序樹會直接導致藍屏。頭破血流過來的,您就不要試了吧~

       後來猜想可能是IIS佔用的,於是關閉了IIS中的應用,如圖:

                                             

       執行Eclipse下的demo,依然被佔用……

       後來朋波也遇到了這個問題,發現是SqlServer的Reporting Service佔用了這個埠,就停止了該報表服務。

                                                 

                                                                                                      

       然後執行Demo,就解決了這個問題,成功解除了80端口占用。

             

       對於Windows系統專用的,像IIS,或者微軟公司的產品,如SQLServer,感覺都怪怪的。他們雖然佔用了80埠,但在程序列表中並不顯示出來。

        3、後續……

        demo執行成功了,於是停止Eclipse對它的服務,然後引入實際的專案程式,再次執行發現還是80端口占用!!!

        好吧,已經無語了。

        於是繼續執行檢視80埠的程序,發現是javaw.exe佔用了該埠。這次問題就比較明朗了,肯定是上面的demo佔用了80埠沒有釋放,於是刪除了demo,再執行專案就沒問題了,試了幾次都保持success。

        小結:解決這個問題的過程反映出我們分析和解決問題時要從多角度考慮:有那些解決思路:無腦百度、問題分析等。理清問題中的“節點”:如80埠是什麼、System程序是什麼、什麼執行環境下產生的問題。這樣我們就會做到遇事不亂、心中有數。