下面的代码应该从套接字接收一个时间,将时间添加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
。该代码是
catch(Exception e) {
System.out.println(e);
System.exit(-1);
}
我把印刷线路中的代码,看看那里的错误发生时,由于某种原因,该程序将终止,而不打印错误try{}
跟随内。所有数字都会打印出来,直到“6”。换句话说,在.readline()
线路上遇到错误。我不知道我做错了什么。任何帮助非常感谢,谢谢。
我觉得有必要指出,将该格式的日期/时间作为一个简单的数字处理,并将其添加6个月将会在原始月份(MM)> 06时产生无效日期。将时间转换为[epoch时间](http://en.wikipedia.org/wiki/Unix_time),然后像这样做。请参阅[Date.getTime()](http://docs.oracle.com/javase/1.5.0/docs/api/java/util/Date.html#getTime())和[SimpleDateFormat](http:/ /docs.oracle.com/javase/1.5.0/docs/api/java/text/SimpleDateFormat.html) – Jiddo
尴尬,我没有意识到,另一种解决方案是: 公共长增量BYSIX(长ret){ long tmp = Long.valueOf(“10000000000”); long tmp2 = ret%tmp; long tmp3 = ret - tmp2; if(tmp2> Long.valueOf(“699999999”))tmp3 + = Long.valueOf(“10000000000”); long tmp4 = ret%tmp; long tmp5 = Long.valueOf(“600000000”); long tmp6 = tmp4 + tmp5; long tmp7 = Long.valueOf(“1200000000”); long tmp8 = tmp6%tmp7; if(tmp6%tmp7
Pinkesz