首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >,PrintWriter不工作

,PrintWriter不工作
EN

Stack Overflow用户
提问于 2018-12-04 04:47:16
回答 1查看 109关注 0票数 0

我试着制作一个服务器和客户端来互相发送简单的消息,但是它不能很好地工作。

当我调试每一方之后,在从服务器发送消息到客户端后,客户端将"hi“放入PrintWriter中,然后客户端完成,但是尽管我使用readline(),但服务器无法读取"hi”。为什么服务器不能读“嗨"?

代码语言:javascript
复制
public class Server1 {
    static ServerSocket ss;
    public static void main(String[] args) {
        // TODO Auto-generated method stub
        try {
            ss=new ServerSocket(4432);
            while(true)
            {
                Socket s=ss.accept();
                System.out.println("accept for client");
                function f=new function(s,ss);
                f.run();
            }
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
    }
}

class function extends Thread{
    Socket s;
    ServerSocket ss;
    function(Socket s,ServerSocket ss)
    {
        this.s=s;
        this.ss=ss;
    }
    @Override
    public void run() {
        try {   

                PrintWriter pw=new PrintWriter(s.getOutputStream());
                InputStreamReader SR=new InputStreamReader(s.getInputStream());//client가 server로부터 메세지 읽어올 stream 추가
                BufferedReader reader=new BufferedReader(SR);

                pw.println("hello im server");
                pw.flush();

                String MFC=reader.readLine();
                String bb=MFC+" correct!";
                System.out.println(bb);

                pw.close();


        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
    }
}

上面的代码是服务器端。

代码语言:javascript
复制
public class Client1 {
    PrintWriter pw;
    InputStreamReader cr;
    static Socket s;
    public static void main(String[] args) {

    // TODO Auto-generated method stub
    Client1 c=new Client1();
    c.sck();
    }
    public void sck() {
    try {

        s=new Socket("127.0.0.1",4432);

        cr=new InputStreamReader(s.getInputStream());
        pw=new PrintWriter(s.getOutputStream());
        BufferedReader bf=new BufferedReader(cr);


        String get=bf.readLine();
        System.out.println(get);

        String hi="hi ";
        pw.print(hi);
        pw.flush();
    } catch (IOException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }
}

}

上面的代码是客户端。

我想要的结果是

代码语言:javascript
复制
[server]
accept for client
hi correct!   ->this is not working

[Client]
hello im server
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-12-04 05:03:38

您的服务器期望在末尾有一个带有换行符的字符串,因此您需要用pw.println(hi);替换客户机中的pw.println(hi);

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/53605850

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档