Java 在套接字和服务器套接字之间发送和接收信息
下面的代码应该从套接字接收一个时间,将该时间加上6个月,然后将其返回到套接字。以下是初始化套接字和服务器的代码:Java 在套接字和服务器套接字之间发送和接收信息,java,sockets,serversocket,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")
//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)
变量rtime是一个已声明的long
。代码位于try{}
中,后跟
catch(Exception e) {
System.out.println(e);
System.exit(-1);
}
我将打印行放在代码中以查看错误发生的位置,因为出于某种原因,程序终止时没有打印错误。所有数字都会打印出来,直到“6”。换句话说,在.readline()
行遇到错误。我不知道我做错了什么。非常感谢您的帮助。请添加
bw.flush()代码>
之后
bw.print(rtime)代码>
这是刷新客户端套接字输出流中的内容所必需的,该输出流将在服务器套接字的输入处可用
否则,在您的示例readline()中;因为这是一个阻塞调用,所以不会出现。+1:在flush()
之前,您还需要发送一个换行或readLine()不会返回。@Pramod K P但为什么它没有抛出异常?我觉得有必要指出,将该格式的日期/时间作为简单数字处理,并向其添加6个月,当原始月份(MM)>06时,将产生无效日期。将时间转换为,然后像那样做加法。请参阅,令人尴尬的是,我没有意识到,另一个解决方案是:公共long incrementBySix(long-ret){long-tmp=long.valueOf(“1000000000”);long-tmp2=ret%tmp;long-tmp3=ret-tmp2;if(tmp2>long.valueOf(“69999999”))tmp3+=long.valueOf(“1000000000”);long-tmp4=ret%tmp;long-tmp5=long.valueOf(“600000000”);长tmp6=tmp4+tmp5;长tmp7=long.valueOf(“1200000000”);长tmp8=tmp6%tmp7;如果(tmp6%tmp7 catch(Exception e) {
System.out.println(e);
System.exit(-1);
}