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 Net基本客户端到服务器消息_Java_Sockets_Networking - Fatal编程技术网

Java Net基本客户端到服务器消息

Java Net基本客户端到服务器消息,java,sockets,networking,Java,Sockets,Networking,嘿,我正在努力掌握一些基本的人际网络。到目前为止,我已经有了一个小程序来启动一个服务器,连接一个向服务器发送消息的客户端 现在我尝试让服务器响应一次,因此总结一下: 服务器启动 客户端连接并发送消息 服务器接收消息,显示消息并发送回消息 客户端显示服务器消息并退出 但是我无法让它工作,它在客户端成功连接后停止工作。 这是客户: public class Client { public static void main(String[] args) throws Exception {

嘿,我正在努力掌握一些基本的人际网络。到目前为止,我已经有了一个小程序来启动一个服务器,连接一个向服务器发送消息的客户端

现在我尝试让服务器响应一次,因此总结一下:

  • 服务器启动
  • 客户端连接并发送消息
  • 服务器接收消息,显示消息并发送回消息
  • 客户端显示服务器消息并退出
但是我无法让它工作,它在客户端成功连接后停止工作。 这是客户:

public class Client {

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

    try {
        Socket sock = new Socket("localhost", 5151);
        String msg = "Hello, I am a Client.";

        if(sock.isConnected()) {
            System.out.println("Connected to server!");
        }

        OutputStream ostream = sock.getOutputStream();
        DataOutputStream dos = new DataOutputStream(ostream);
        dos.writeBytes(msg);

        InputStream istream = sock.getInputStream();
        BufferedReader br1 = new BufferedReader(new InputStreamReader(istream));
        String msgBack = br1.readLine();

        System.out.println(msgBack);

        br1.close();
        dos.close();
        ostream.close();
        sock.close();
    } catch(Exception e) {
        System.out.println("Could not conenct to server.");
    }
}
}

和服务器:

public class Server {

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

    ServerSocket sock = new ServerSocket(5151);
    System.out.println("Server is running!");

    Socket client = sock.accept();
    System.out.println("Client connected from " + client.getLocalAddress());

    InputStream istream = client.getInputStream();
    DataInputStream dis = new DataInputStream(istream);

    String msg = dis.readLine();

    System.out.println(msg);

    OutputStream ostream = client.getOutputStream();
    BufferedWriter bw1 = new BufferedWriter(new OutputStreamWriter(ostream));

    String msgBack = "Thank you for connecting!";
    bw1.write(msgBack);

    bw1.close();
    dis.close();
    istream.close();
    client.close();
    sock.close();

}
}


谢谢你的帮助

什么不起作用?添加堆栈跟踪和您遇到的异常。我没有收到任何直接错误,只是在客户端连接后它“冻结”,好像它在等待什么。好吧,您的服务器被阻止,等待
String msg=dis.readLine()中的换行符。由于您的客户端不发送一个,服务器将永远等待。如果将客户机行更改为
dos.writeUTF(msg)
,将服务器行更改为
String msg=dis.readUTF()
,则更有意义的是,您可以始终尝试使用调试器单步执行代码,以找出程序冻结的位置。