Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sockets/2.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套接字:为什么客户端不';t应答服务器_Java_Sockets_Connection_Client - Fatal编程技术网

Java套接字:为什么客户端不';t应答服务器

Java套接字:为什么客户端不';t应答服务器,java,sockets,connection,client,Java,Sockets,Connection,Client,我想写一个客户机-服务器程序,其中服务器和客户机相互发送消息。首先,我的服务器向客户机发送消息,然后客户机回复。接下来,我的服务器发送另一条消息,客户机回复。问题是,在服务器引发的第一条消息中,客户端没有响应。 我的服务器: public class Server { public void go() { try { ServerSocket serverSocket = new ServerSocket(9999); System.out.println

我想写一个客户机-服务器程序,其中服务器和客户机相互发送消息。首先,我的服务器向客户机发送消息,然后客户机回复。接下来,我的服务器发送另一条消息,客户机回复。问题是,在服务器引发的第一条消息中,客户端没有响应。 我的服务器:

public class Server {
public void go() {
    try {
        ServerSocket serverSocket = new ServerSocket(9999);
        System.out.println("Server listening ...");
        Socket socket = serverSocket.accept();
        try (
            PrintWriter printWriter = new PrintWriter(socket.getOutputStream());
            BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(socket.getInputStream()));
        ) {
            String input;
            printWriter.println(new Scanner(System.in).nextLine());
            while ((input = bufferedReader.readLine()) != null) {
                System.out.println(input);
                printWriter.println(new Scanner(System.in).nextLine());
                if(input == "Bye") break;
            }
        }


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

public static void main(String[] args) {
    Server server = new Server();
    server.go();
}
}

我的客户:

public class Client {

public void go() {
    try {
        try (
            Socket socket = new Socket("localhost", 9999);
            PrintWriter printWriter = new PrintWriter(socket.getOutputStream());
            BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(socket.getInputStream()));
        ) {
            String input;
            while ((input = bufferedReader.readLine()) != null) {
                System.out.println("1");
                System.out.println(input);
                printWriter.println(new Scanner(System.in).nextLine());
            }
        }
    } catch (UnknownHostException e) {
        e.printStackTrace();
    } catch (IOException e) {
        e.printStackTrace();
    }
}

public static void main(String[] args) {
    Client client = new Client();
    client.go();
}
}


我的代码有问题吗?

您的客户端连接,然后阻止从服务器读取线路

您的服务器接受连接,然后阻止从客户端读取线路


我不知道你期望下一步会发生什么,但不会的。有人需要发送一些东西。

您的代码似乎很好。您只需在写入以下内容后通过调用flush()来推动基础结构:

printWriter.flush(); 

方法
ServerSocket#accept()
侦听与此套接字的连接并接受它。这个方法会一直阻塞直到建立连接。我是服务器客户端编程的新手,你说的“阻塞读一行”是什么意思,我只想让我的客户端回复服务器,我的服务器向clientReply发送消息到什么?每个人都在接收,没有人发送任何要接收的东西。如何才能有人向另一个人发送东西?使用write()方法发送。