import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.io.IOException;
import java.net.Socket;
import java.net.UnknownHostException;
import com.ConstString.ConstChar;
public class client {
Socket socket;
DataInputStream in;
DataOutputStream out;
public void connect() {
try {
socket = new Socket(ReadProper.getIp(), ReadProper.port);
} catch (NumberFormatException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (UnknownHostException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
// 发送参数
public void SendMessage(byte[] r) {
try {
out = new DataOutputStream(socket.getOutputStream());
// 请求服务器端
out.write(r);
out.flush();
} catch (UnknownHostException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
// 接受数据
public String getMessage() {
byte wel[] = new byte[50];
try {
if(socket.getInputStream()!=null)
{
in = new DataInputStream(socket.getInputStream());
// 定义存放接受的数据的字符数组
byte result[] = new byte[RESULTLENGTH];
// 接受数据
in.read(result);
// 分割各个返回的数据
System.arraycopy(result, 0, wel, 0, 32);
// 测试接收的结果
System.out.println("返回结果是:" + new String(wel));
}
} catch (IOException e) {
e.printStackTrace();
}
return new String(wel);
}
public void close()
{
try {
socket.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
// 用于测试的主函数
public static void main(String arg[]) {
client a = new client();
a.connect();
a.SendMessage(ConstChar.r9);
a.getMessage();
a.SendMessage(ConstChar.r11);
a.getMessage();
// a.SendMessage(ConstChar.r9);
// a.getMessage();
a.close();
}
}
做智能家具的web页面需要用到socket和板子通信,因此写了一个client类用来通信。
但是还是有问题,这里每一次发送获取命令都是调用这个类,因此需要不断的连接,断开。实时性不好。不知道有什么好的方法