下面的代碼應該從套接字接收一個時間,將時間添加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