Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/372.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客户端/服务器应用程序将不会readLine()_Java_Client Server_Client_Server - Fatal编程技术网

Java客户端/服务器应用程序将不会readLine()

Java客户端/服务器应用程序将不会readLine(),java,client-server,client,server,Java,Client Server,Client,Server,我正在尝试编写一个程序,允许用户向服务器发送消息并接收该消息的修改版本。由于某种原因,程序的流程在下面的某一行停止,我已经指出了这一点。有人能解释为什么这不起作用吗?谢谢 服务器端 import java.net.*; import java.io.*; public class Server{ public final static int port = 1025; public static void main (String[] args){ S

我正在尝试编写一个程序,允许用户向服务器发送消息并接收该消息的修改版本。由于某种原因,程序的流程在下面的某一行停止,我已经指出了这一点。有人能解释为什么这不起作用吗?谢谢

服务器端

import java.net.*;
import java.io.*;


public class Server{

    public final static int port = 1025; 

    public static void main (String[] args){

        ServerSocket serverSocket;
        Socket client;
        PrintWriter output;

        try{
            serverSocket = new ServerSocket(port);
            try{
                while(true){
                    client = serverSocket.accept();
                    InputStream is = client.getInputStream();
                    InputStreamReader isr = new InputStreamReader(is);
                    BufferedReader br = new BufferedReader(isr);
                    String message = br.readLine();
                    System.out.println("Message received from client is " + message);

                    String returnMessage = message + message;

                    OutputStream os = client.getOutputStream();
                    OutputStreamWriter osw = new OutputStreamWriter(os);
                    BufferedWriter bw = new BufferedWriter(osw);
                    bw.write(returnMessage);
                    System.out.println("Message sent to the client is " + returnMessage);
                    bw.flush();
                }
            } catch(IOException e){ 
                serverSocket.close();
                System.err.println(e);
            }
        } catch(IOException e){
            System.err.println(e);
        }
    }
}
客户端

import java.util.Scanner;
import java.net.*;
import java.io.*;

class Client{

    public void getService(String destination, int port){
        try{
            while(true)
            {
                Scanner in = new Scanner(System.in);
                System.out.println("Send a message to the server: ");
                String message = in.nextLine();


                Socket server = new Socket(destination, port);

                OutputStream os = server.getOutputStream();
                OutputStreamWriter osw = new OutputStreamWriter(os);
                BufferedWriter bw = new BufferedWriter(osw);


                String sendMessage = message + "\n";
                bw.write(sendMessage);
                bw.flush();
                System.out.println("Message sent to the server : "+ sendMessage);


                InputStream is = server.getInputStream();
                InputStreamReader isr = new InputStreamReader(is);
                BufferedReader br = new BufferedReader(isr);
                String message2 = br.readLine(); // I have determined that the program's flow proceeds no further than this line
                System.out.println("Message received from the server : " + message2);

            }
        } catch(IOException e){
            e.printStackTrace();
        }

    }

    public static void main(String[] args){
        String serverAddress = args[0];
        System.out.println(serverAddress);

        Client client = new Client();
        client.getService(serverAddress, 1025);
    }
}
服务器使用,其
readLine
方法需要一个行尾分隔符,但客户端不发送它,而是读取行(去掉行尾分隔符)并尝试回显此消息。在客户端发送的数据中添加新行字符,以便服务器的
readLine
方法在等待行时不会阻塞:

String returnMessage = message + message + "\n";