Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/377.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

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客户端/服务器套接字程序-服务器不响应客户端请求_Java_Sockets - Fatal编程技术网

Java客户端/服务器套接字程序-服务器不响应客户端请求

Java客户端/服务器套接字程序-服务器不响应客户端请求,java,sockets,Java,Sockets,我正在尝试测试提供的客户机/服务器教程示例,并做了一些小的调整 理想情况下,我会在客户端的BufferedReaderstdIn中写入“print stuff”,服务器在收到该字符串后会打印出“client and server connected!” 我的代码已编译,连接似乎成功。但是,我的服务器此时没有打印任何内容 以下是我的客户端代码: public class myClient { public static void main(String[] args) throws IOExce

我正在尝试测试提供的客户机/服务器教程示例,并做了一些小的调整

理想情况下,我会在客户端的BufferedReader
stdIn
中写入“print stuff”,服务器在收到该字符串后会打印出“client and server connected!”

我的代码已编译,连接似乎成功。但是,我的服务器此时没有打印任何内容

以下是我的客户端代码:

public class myClient {

public static void main(String[] args) throws IOException {

    String hostName = // my computer's local host name;
    int portNumber = 4444;

    try ( 
        Socket clientSocket = new Socket(hostName, portNumber);
        PrintWriter out = new PrintWriter(clientSocket.getOutputStream(), true);
        BufferedReader in = new BufferedReader(new InputStreamReader(clientSocket.getInputStream()));
    ) {
        BufferedReader stdIn = new BufferedReader(new InputStreamReader(System.in));

        // Tell server to print line "Client and server have connected!";
        String fromServer;
        String fromUser;

        while ((fromServer = in.readLine()) != null) {
            if (fromServer.equals("End"))
                break;

            fromUser = stdIn.readLine();

            if (fromUser != null)
                out.println(fromUser);
        }

    } catch (UnknownHostException e) {
        System.err.println("Don't know host!");
        System.exit(1);
    } catch (IOException e) {
        System.err.println("IO Exception caught!");
        System.exit(1);
    }

}

}
以下是我的服务器代码:

public class myServer {

public static void main(String[] args) throws IOException {

    int portNumber = 4444;

    try (
        ServerSocket serverSocket = new ServerSocket(portNumber);
        Socket clientSocket = serverSocket.accept();

        PrintWriter out = new PrintWriter(clientSocket.getOutputStream(), true);
        BufferedReader in = new BufferedReader(new InputStreamReader(clientSocket.getInputStream()));
    ) {

        // if receieved string is "print stuff", print "Client and server have connected!";
        String inputLine;

        while ((inputLine = in.readLine()) != null) {
            if (inputLine.equals("End"))
                break;

            // try to echo input stream - no output!
            out.println(inputLine);

            if (inputLine.equals("print stuff"))
                out.println("Client and server have connected!");
        }

    } catch(IOException e) {
        System.err.println("Exception caught while trying to listen to port!");
    }

}

}第一个错误是,客户端在连接后等待服务器的输入,但服务器不发送任何内容。因此,永远不会执行用户输入循环


第二个错误是,只要不输入“打印内容”,服务器就不会对客户端做出任何响应。因此,客户端再次等待服务器的输入,而不是等待用户的输入。

尝试将服务器从客户端接收到的每一行打印到控制台。这应该会使调试变得更容易。@ruediste不知道我为什么没有想到这一点-只是尝试了一下(并修改了我的代码),没有什么比打印更有趣的了!非常感谢。