簡體   English   中英

簡單的客戶端服務器:在寫入緩沖區之前或之后,刷新不起作用

[英]Simple Client-Server: flushing not working before or after writing in the buffer

我將字符串發送到服務器,但是服務器在發送字符串之前得到了奇怪的字符,在發送之前,發送之后以及初始化outputstream變量后我嘗試刷新,但是結果是相同的。 ()並對其進行搜索,但仍然沒有找到如何解決我的問題的方法,也許它很簡單,但我無法理解。

請幫我!

客戶端

    InetAddress endereco = InetAddress.getByName(null); 
    socket= new Socket(endereco, SServer.PORTO);
    in = new BufferedReader(new InputStreamReader(socket.getInputStream()));
    out = new PrintWriter(new ObjectOutputStream(socket.getOutputStream()),true);

    while(true){                        
        System.out.println("Write your Thoughs.. ");
        Scanner scanner = new Scanner(System.in);
        String Msg = scanner.nextLine();
        System.out.println("I Said: ");
        System.out.println(Msg);
        out.println(Msg);
        out.flush();
        String s  = in.readLine();
        System.out.println("Echo: "+s);

}

//服務端

in = new BufferedReader(new  InputStreamReader(socket.getInputStream()));
    out = new PrintWriter(new BufferedWriter(new OutputStreamWriter(socket.getOutputStream())),true);
    out.flush();
}

private void serve() throws IOException {
                    while(true){
        String s = in.readLine();
        System.out.println("Server Received: " + s);
        if(s.equals("END"))
            break;
        System.out.println("Server Send: " + s);
        out.println(s);     


    }

我認為正在發生的事情是,在編寫字符串時,您正在通過ObjectOutputStream推送它們,而ObjectOutputStream試圖對其進行序列化(我認為)。 您使事情變得不必要了。 嘗試使用

out = new PrintWriter(socket.getOutputStream());

那將只是直接通過該行轉儲文本,而沒有所有其他內容。

暫無
暫無

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

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