2017-10-08 97 views
1

我在Java中編寫了套接字客戶端,並在python上編寫了一個服務器。我在臺式機上運行虛擬機(Ubuntu),然後啓動服務器。如果我在筆記本上運行客戶端代碼,它可以正常工作,我可以發送和接收數據。服務器關閉,但問題出在我的臺式機上。我複製了相同的代碼,但它不起作用。它連接,並且可以發送但不接收。我認爲這是一個網絡問題,但我還沒有找到解決方案。TCP客戶端得到異常錯誤

這裏是我的代碼

Python的服務器:

import socket 
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM) 
s.bind(("",9999) 
s.listen(1) 
sc,addr = s.accept() 
recibido = sc.recv(4000000 
print recibido 
if (recibido == "Dante"): 
ed= "Im Cristian" 
sc.sendall(ed) 

Java客戶端

public static void main(String[] args) { 
    try { 
     String str ="Dante"; 
     Socket s = new Socket ("192.168.1.104",9999); 
     PrintStream p= new PrintStream(s.getOutputStream()); 
     p.println(str); 
     BufferedReader input = new BufferedReader(new InputStreamReader(s.getInputStream())); 
     String st = input.readLine(); 
     System.out.println(""+st); 


    } catch (IOException ex) { 
     System.out.println("Error: "+ ex.getMessage()); 
     Logger.getLogger(TCPCliente.class.getName()).log(Level.SEVERE, null, ex); 

    } 

} 

錯誤客戶端

Error conecction reset 
oct 08, 2017 2:18:15 PM tcpcliente.TCPCliente main 
GRAVE: null 
java.net.SocketException: Connection reset 
    at java.net.SocketInputStream.read(SocketInputStream.java:209) 
    at java.net.SocketInputStream.read(SocketInputStream.java:141) 
    at sun.nio.cs.StreamDecoder.readBytes(StreamDecoder.java:284) 
    at sun.nio.cs.StreamDecoder.implRead(StreamDecoder.java:326) 
    at sun.nio.cs.StreamDecoder.read(StreamDecoder.java:178) 
    at java.io.InputStreamReader.read(InputStreamReader.java:184) 
    at java.io.BufferedReader.fill(BufferedReader.java:161) 
    at java.io.BufferedReader.readLine(BufferedReader.java:324) 
    at java.io.BufferedReader.readLine(BufferedReader.java:389) 
    at tcpcliente.TCPCliente.main(TCPCliente.java:26) 

難道一個防火牆問題?

+1

當你搜索'tcp connection reset'時,你發現了什麼?如果你還沒有嘗試過,那就請這樣做。 –

+0

抱歉,但我不明白你說的是什麼意思?當它顯示錯誤部分我只能cliock上最後一行 at'tcpcliente.TCPCliente.main(TCPCliente.java:26)' 並將我發送到我的java客戶端代碼中的26行 'String st = input.readLine();' –

+0

錯誤實際上與您的客戶端代碼無關。這是一個網絡問題,但最有可能是服務器連接另一端的問題。你有沒有檢查那裏發生了什麼?我可以看到,你顯示的Python代碼是*無效*,也許它因此而停止了? –

回答

0

我解決了它,問題太無聊了,我覺得自己像一個小丑,似乎在我的服務器上我有大寫字母「DANTE」,所以它永遠不會迴應,因爲不符合我的客戶「Dante」 ,對不起。