我试图通过客户端和服务器之间的套接字创建通信。情况如下:在服务器上有温度控制,我想每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"例外。
谁能给我任何建议,请????
答案 0 :(得分:-1)
我已成功使用DataOutputStream / DataInputStream。它允许您传输基本的Java结构。
在客户端,如果您的温度是浮点数,您可以使用writeFloat方法,而使用DataInputStream的服务器将使用
float foo = in.readFloat();
此调用将阻塞,直到有一个要读取的浮点数,或者如果客户端关闭套接字则抛出异常。您可以使用while循环来处理值。
但是,我会通过终止连接来完成此操作。它只是在我看来更整洁,更“sockety”。每隔2秒钟,您的温度传感器就会打开一个新连接,发送数值并关闭插座。您的服务器将在serversocket.accept()中等待,而只是从客户端套接字读取一个浮点数。
哈努哈利