簡體   English   中英

Java.net.SocketException:權限被拒絕:connect

[英]Java.net.SocketException: Permission denied: connect

我要連接一個網絡中的兩台PC。 其中一個應通過TCP向另一個發送通知。 我有一台PC上有一個“服務器”(Python腳本)套接字,它等待“客戶端”(Jar文件)發送特定的String,然后向我發出通知。 當我在一台PC上進行嘗試時,這工作得很好。 但是,當我想要執行預期的操作時,“客戶端” PC的.jar給我一個錯誤,該錯誤是連接被拒絕。 我是否必須在另一台PC上打開特定端口,否則還會引起麻煩? 一台PC運行Fedora,另一台運行Windows 8

“服務器代碼”

s = socket.socket(socket.AF_INET, socket.SOCK_STREAM) 
s.bind(("", 5005)) 
s.listen(1)

try: 
    while True: 
        komm, addr = s.accept() 
        while True: 
            data = komm.recv(1024)
            if data == "$":
                noty()
            if not data: 
                komm.close() 
                break
finally: 
    s.close()

“客戶”代碼

public static void main(String[] args) throws Exception {
Socket socket = new Socket("192.168.178.25", 5005); 
OutputStream out = socket.getOutputStream();
String dat = "$";
    out.write(dat.getBytes());
socket.close();
}

如果其權限被拒絕,則說明某些原因阻止了您與計算機的連接。 我會嘗試打開一個端口,看看是否可行。 如果您想要一個Java套接字的示例,可以看看我的SUPER Tic-Tac-Toe Multiplayer,它使用Java套接字將字符串發送給客戶端,以表示客戶端應采取的操作。

您的服務器可能綁定了錯誤的接口,

呼喚

s.bind(("", 5005)) 

如果不設置接口,程序將可以選擇要連接的IP地址/接口。

由於您的客戶端正在嘗試連接("192.168.178.25", 5005); 您可能需要將IP地址放入綁定調用中,以防止服務器選擇錯誤的ip接口。

例:

s.bind(("192.168.178.25", 5005)) 

暫無
暫無

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

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