2013-11-01 148 views
0

我想在一個網絡中連接兩臺PC。其中一人應通過TCP向其他人發送通知。一個PC我有一個「服務器」(Python腳本)套接字,它等待「客戶端」(Jar文件)發送一個特定的字符串,然後它給了我一個通知。當我嘗試使用一臺PC時,這很好。但是當我想要執行預期的操作時,「客戶端」PC .jar給我一個連接被拒絕的錯誤。我是否必須在另一臺電腦上打開特定的端口,否則會導致麻煩?一臺PC上運行Fedora的其他Windows 8Java.net.SocketException:權限被拒絕:連接

「服務器代碼」

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(); 
} 
+0

你需要給一些代碼。很可能您的端口/ IP出錯,或者您的接口綁定到了錯誤的接口,或者您的服務器沒有收聽。 – Serdalis

+0

我的錯對不起我加入這兩個應用程序的代碼 – lup3x

+0

嘗試把服務器IP分爲綁定電話。也端口5005 [使用相當多的事物(http://www.speedguide.net/port.php?port=5005)(包括木馬),也許選擇一個空虛之一。 – Serdalis

回答

0

你的服務器可能綁定到錯誤的接口,

調用

s.bind(("", 5005)) 

沒有設置接口將允許程序選擇什麼樣的IP地址/接口將連接到。

由於您的客戶端試圖連接到("192.168.178.25", 5005);,你可以把它放到一個IP地址綁定調用,以防止服務器選擇了錯誤的IP接口。

例子:

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

如果拒絕的權限,然後東西阻止與計算機的連接。我會嘗試打開一個端口,看看是否有效。如果你想要一個java套接字的例子,你可以看看我的SUPER Tic-Tac-Toe Multiplayer,它使用java套接字向客戶端發送字符串,以此來表示客戶端應該採取的行動。

相關問題