以下代码应该从套接字接收时间,添加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()
行符合错误。我不知道我做错了什么。非常感谢任何帮助,谢谢。
答案 0 :(得分:1)
请添加
bw.flush();
之后
bw.print(rtime);
这是从客户端套接字输出流中刷新内容所必需的,然后在服务器套接字的输入处可用。
否则,在您的示例中,readline();不会出来,因为这是一个阻止电话。