Java 在套接字和服务器套接字之间发送和接收信息

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")

下面的代码应该从套接字接收一个时间,将该时间加上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)

变量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); }