簡體   English   中英

java.net.BindException:權限被拒絕為root

[英]java.net.BindException: Permission denied as root

我在http://docs.oracle.com/javase/tutorial/networking/sockets/clientServer.html上關注Oracle的ServerSide Socket教程。 我使用它們提供的來源:

但是,當我嘗試運行KnockKnockServer時,出現IOException,然后服務器打印

Could not listen on port: 4444.

我在IOException catch塊中添加了一個e.printStackTrace() ,並獲得:

[beni@mackerel:~]$ \sudo java KnockKnockServer
Creating socket
Could not listen on port: 4444.
java.net.BindException: Permission denied
    at java.net.PlainSocketImpl.socketBind(Native Method)
    at java.net.PlainSocketImpl.bind(PlainSocketImpl.java:383)
    at java.net.ServerSocket.bind(ServerSocket.java:328)
    at java.net.ServerSocket.<init>(ServerSocket.java:194)
    at java.net.ServerSocket.<init>(ServerSocket.java:106)
    at KnockKnockServer.main(KnockKnockServer.java:41)

請注意,我以root用戶身份運行它,並嘗試打開端口4444。為什么我仍然出現“權限被拒絕”錯誤?

我設法解決了這個問題。 我放手了! 安裝在我的系統上,但禁用了菜單欄中的所有規則。 KnockKnockServer仍然無法打開端口。 現在我已經卸載了Hands Off! 完全,並且可以照常打開端口。

仍然有點令人驚訝,因為我始終能夠使用nc -l 4444和C程序打開相同的套接字端口,但是無法從Java中打開。 但是同時,Hands Off並沒有問我是否要允許我的KnockKnockServer打開端口。

我將繼續提供動手支持,也許他們可以提供幫助。

謝謝,問候本尼迪克特

我能想到的唯一解釋是SELinux拒絕了綁定。

4444端口被另一個程序使用。

轉到任務管理器,然后單擊“進程”選項卡,檢查是否正在運行任何javaw.exe。 結束程序,然后運行程序

暫無
暫無

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

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