Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/394.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java中的服务器客户端仅在我按enter键时显示消息_Java - Fatal编程技术网

Java中的服务器客户端仅在我按enter键时显示消息

Java中的服务器客户端仅在我按enter键时显示消息,java,Java,我有这个服务器和客户端代码。如果我从服务器向客户机发送消息,除非我先向客户机发回消息或按enter键,否则不会显示该消息,当我尝试另一种方法时,同样的问题也会发生。我怎样才能解决这个问题 服务器: public static void main(String[] args) throws Exception { ServerSocket sersock = new ServerSocket(3000); System.out.println("Server

我有这个服务器和客户端代码。如果我从服务器向客户机发送消息,除非我先向客户机发回消息或按enter键,否则不会显示该消息,当我尝试另一种方法时,同样的问题也会发生。我怎样才能解决这个问题

服务器:

   public static void main(String[] args) throws Exception {
        ServerSocket sersock = new ServerSocket(3000);
        System.out.println("Server ready for chatting");
        Socket sock = sersock.accept(); // reading from keyboard (keyRead object) 
        BufferedReader keyRead = new BufferedReader(new InputStreamReader(System.in)); // sending to client (pwrite object)
        OutputStream ostream = sock.getOutputStream();
        PrintWriter pwrite = new PrintWriter(ostream, true);   // receiving from server ( receiveRead object) 
        InputStream istream = sock.getInputStream();
        BufferedReader receiveRead = new BufferedReader(new InputStreamReader(istream));
        String receiveMessage, sendMessage;

        GossipServer gs = new GossipServer();
        gs.initalisePieces();
        gs.displayBoard(pwrite);

        pwrite.println("Welcome to my Chess Game - Designed by Robbie Singh");
        while (true) {
            if ((receiveMessage = receiveRead.readLine()) != null) {
                System.out.println(receiveMessage);
            }
            sendMessage = keyRead.readLine();
            pwrite.println(sendMessage);
            pwrite.flush();
        }
    }
public static void main(String[] args) throws Exception {
        Socket sock = new Socket("127.0.0.1", 3000); // reading from keyboard (keyRead object) 
        BufferedReader keyRead = new BufferedReader(new InputStreamReader(System.in)); // sending to client (pwrite object)
        OutputStream ostream = sock.getOutputStream();
        PrintWriter pwrite = new PrintWriter(ostream, true);   // receiving from server ( receiveRead object) 
        InputStream istream = sock.getInputStream();
        BufferedReader receiveRead = new BufferedReader(new InputStreamReader(istream));
        System.out.println("Welcome to my Chess Game - Designed by Robbie Singh");
        String receiveMessage, sendMessage;
        while (true) {
            sendMessage = keyRead.readLine(); // keyboard reading 
            pwrite.println(sendMessage); // sending to server 
            pwrite.flush(); // flush the data 
            Timer timer = new Timer();
            timer.scheduleAtFixedRate(new TimerTask() {
                @Override
                public void run() {
                    try{
                    System.out.println(receiveRead.readLine());
                    }catch(Exception e){}
                }
            }, 0, 5000);
        }
    }
}
客户端:

   public static void main(String[] args) throws Exception {
        ServerSocket sersock = new ServerSocket(3000);
        System.out.println("Server ready for chatting");
        Socket sock = sersock.accept(); // reading from keyboard (keyRead object) 
        BufferedReader keyRead = new BufferedReader(new InputStreamReader(System.in)); // sending to client (pwrite object)
        OutputStream ostream = sock.getOutputStream();
        PrintWriter pwrite = new PrintWriter(ostream, true);   // receiving from server ( receiveRead object) 
        InputStream istream = sock.getInputStream();
        BufferedReader receiveRead = new BufferedReader(new InputStreamReader(istream));
        String receiveMessage, sendMessage;

        GossipServer gs = new GossipServer();
        gs.initalisePieces();
        gs.displayBoard(pwrite);

        pwrite.println("Welcome to my Chess Game - Designed by Robbie Singh");
        while (true) {
            if ((receiveMessage = receiveRead.readLine()) != null) {
                System.out.println(receiveMessage);
            }
            sendMessage = keyRead.readLine();
            pwrite.println(sendMessage);
            pwrite.flush();
        }
    }
public static void main(String[] args) throws Exception {
        Socket sock = new Socket("127.0.0.1", 3000); // reading from keyboard (keyRead object) 
        BufferedReader keyRead = new BufferedReader(new InputStreamReader(System.in)); // sending to client (pwrite object)
        OutputStream ostream = sock.getOutputStream();
        PrintWriter pwrite = new PrintWriter(ostream, true);   // receiving from server ( receiveRead object) 
        InputStream istream = sock.getInputStream();
        BufferedReader receiveRead = new BufferedReader(new InputStreamReader(istream));
        System.out.println("Welcome to my Chess Game - Designed by Robbie Singh");
        String receiveMessage, sendMessage;
        while (true) {
            sendMessage = keyRead.readLine(); // keyboard reading 
            pwrite.println(sendMessage); // sending to server 
            pwrite.flush(); // flush the data 
            Timer timer = new Timer();
            timer.scheduleAtFixedRate(new TimerTask() {
                @Override
                public void run() {
                    try{
                    System.out.println(receiveRead.readLine());
                    }catch(Exception e){}
                }
            }, 0, 5000);
        }
    }
}

这就是在服务器端等待主循环中的键盘输入的方式

    while (true) 
    {
        if ((receiveMessage = receiveRead.readLine()) != null) 
        {
            System.out.println(receiveMessage);
        }

        //PUT THESE LINE IN OTHER THREAD AND SHOULD FIX THE PROBLEM
        sendMessage = keyRead.readLine();
        pwrite.println(sendMessage);
        pwrite.flush();
        //////////////////////////////////////////
    }
顺便说一下,我建议您阅读以下链接中的聊天应用程序示例: