java在socket和服务器socket之间发送和接收信息
下面的代码应该从socket接收一个时间,再加上6个月,然后将其返回socket。下面是初始化socket和服务器的代码:
//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()
行遇到错误。我不知道我做错了什么。非常感谢您的帮助,谢谢
# 1 楼答案
请加上
bw.flush();
之后
bw.print(rtime);
这是从客户机套接字输出流中刷新内容所必需的,然后可以在服务器套接字的输入中使用
否则,在您的示例readline()中;不会出来,因为这是一个拦截呼叫