在套接字和ServerSockets之间发送和接收信息

时间:2011-12-14 00:49:23

标签: java sockets serversocket

以下代码应该从套接字接收时间,添加6个月的时间并将其返回到套接字。以下是初始化套接字和服务器的代码:

    //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 个答案:

答案 0 :(得分:1)

请添加

bw.flush();

之后

bw.print(rtime);

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

否则,在您的示例中,readline();不会出来,因为这是一个阻止电话。