簡體   English   中英

Server-Client JAVA套接字編程錯誤

[英]Server-Client JAVA socket programming error

我是socket編程的新手,想要創建一個發送數字的客戶端,服務器返回客戶端發送的數字的倍數。 我首先運行服務器然后運行客戶端。 我正在輸入值,但沒有得到服務器的任何響應。 以下是我的客戶端和服務器代碼。

服務器代碼

try
        {
        ServerSocket ss=new ServerSocket(4000);
        while(true)
        {
         Socket sock=ss.accept();
        InputStreamReader isr=new InputStreamReader(sock.getInputStream());
        BufferedReader br=new BufferedReader(isr);
        String num=br.readLine();
        try
        {
            int n=Integer.parseInt(num);
            n=n*2;
            String ret=String.valueOf(n);
            PrintWriter writer=new PrintWriter(sock.getOutputStream());
            writer.println(ret);
            writer.close();
        }
        catch(IOException ex)
        {
            System.out.println("Enter a number!");
        }
        }
        }
        catch(Exception ex)
        {
            System.out.println("Error");
        }

客戶代碼

try
        {
         Socket s=new Socket("127.0.0.1",4000);
        String st;
        PrintWriter pw=new PrintWriter(s.getOutputStream());
        InputStreamReader isr=new InputStreamReader(s.getInputStream());
        BufferedReader br=new BufferedReader(isr);
        InputStreamReader is=new InputStreamReader(System.in);
        BufferedReader in=new BufferedReader(is);
        st=in.readLine();
            pw.println(st);
            st=br.readLine();
            System.out.println("the server says: "+ st);
        }
        catch(IOException ex)
        {
            ex.printStackTrace();
        }

請建議我要遵循的步驟,因為我沒有從服務器獲得任何輸出。

問題在於客戶端代碼的這一部分,它通過pw發送st ,然后聲明st是服務器的輸出。

pw.println(st);
System.out.println("the server says: "+ st);

您應該能夠通過br解決實際從服務器獲取值的問題。 你還需要沖洗pw

pw.println(st);
pw.flush();
st = br.readLine();
System.out.println("the server says: "+ st);

或者,您可以像這樣進行pw自動刷新:

PrintWriter pw=new PrintWriter(s.getOutputStream(),true);
// ...
pw.println(st);
st = br.readLine();
System.out.println("the server says: "+ st);

暫無
暫無

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

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