有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java在socket和服务器socket之间发送和接收信息

下面的代码应该从socket接收一个时间,再加上6个月,然后将其返回socket。下面是初始化socket和服务器的代码:

    //open and connect the sockets
    ServerSocket ss = new ServerSocket(4444);
    System.out.println("1");
    Socket sock = new Socket(ss.getInetAddress(),4444);
    System.out.println("2");
    Socket srv = ss.accept();
    System.out.println("3");

下面的代码显示服务器接收时间并向其添加6个月(时间格式为YYYYMMDDHHMMSS)

    //send/receive and increment the current time by 6 months
    PrintWriter bw = new PrintWriter(sock.getOutputStream());
    System.out.println("4");
    bw.print(rtime);
    System.out.println("5");
    //add 6 months to the current time
    long ret = Long.valueOf(new BufferedReader(new InputStreamReader(srv.getInputStream())).readLine()) + 600000000;
    System.out.println("6");

变量rtime是一个已经声明的long。代码在一个try{}中,后面跟

    catch(Exception e) {
      System.out.println(e);
      System.exit(-1);
    }

我将打印行放在代码中,以查看错误发生的位置,因为出于某种原因,程序在没有打印错误的情况下终止。所有数字都会打印出来,直到“6”。换句话说,在.readline()行遇到错误。我不知道我做错了什么。非常感谢您的帮助,谢谢


共 (1) 个答案

  1. # 1 楼答案

    请加上

    bw.flush();

    之后

    bw.print(rtime);

    这是从客户机套接字输出流中刷新内容所必需的,然后可以在服务器套接字的输入中使用

    否则,在您的示例readline()中;不会出来,因为这是一个拦截呼叫