套接字通信java:在循环中发送多个字符串

时间:2013-11-09 14:22:48

标签: java sockets

我试图通过客户端和服务器之间的套接字创建通信。情况如下:在服务器上有温度控制,我想每2秒发送一次,例如,温度值发送给客户端。好吧,我想要的是只使用一个套接字在循环中发送更多字符串...简而言之,我会有类似的东西

Socket s=new Socket (IPAddress,serverport);
InputStreamReader isr = new InputStreamReader(s.getInputStream());
in = new BufferedReader(isr);
while (continue) {
  String temperature=in.readLine();
  //code for processing incoming information
  } in.close(); s.close();

服务器中也是如此。现在,如果我没有关闭输入流,我什么也得不到,但如果我关闭它,自动套接字也会关闭,程序会抛出"关闭socked"例外。
谁能给我任何建议,请????

1 个答案:

答案 0 :(得分:-1)

我已成功使用DataOutputStream / DataInputStream。它允许您传输基本的Java结构。

在客户端,如果您的温度是浮点数,您可以使用writeFloat方法,而使用DataInputStream的服务器将使用

float foo = in.readFloat();

此调用将阻塞,直到有一个要读取的浮点数,或者如果客户端关闭套接字则抛出异常。您可以使用while循环来处理值。

但是,我会通过终止连接来完成此操作。它只是在我看来更整洁,更“sockety”。每隔2秒钟,您的温度传感器就会打开一个新连接,发送数值并关闭插座。您的服务器将在serversocket.accept()中等待,而只是从客户端套接字读取一个浮点数。

哈努哈利