import java.io.*;importjava.net.Socket;importjava.util.regex.Pattern;public classTestSocket {public static voidmain(String[] args) {/** command:
* on1 off1 read1
* on2 off2 read2
**/
try{
BufferedReader input= new BufferedReader(newInputStreamReader(System.in));boolean flag = true;while(flag) {
System.out.println("输入信息: ");
String str=input.readLine();if ("bye".equals(str)) {
flag= false;
}else{
String s=sendCommand(str);
System.out.println(s);
}
}
input.close();
System.err.println("good bye");
}catch(Exception e) {
e.printStackTrace();
}
}public staticString sendCommand(String command) {
String result;
String ip= "172.18.20.188";int port = 5000;
Socket socket= null;try{
socket= newSocket(ip,port);
socket.setSoTimeout(1000); //read 超时
OutputStream outputStream=socket.getOutputStream();byte[] receive = new byte[1];byte[] bytes = command.getBytes("UTF-8"); //转码 ×××
outputStream.write(bytes);
InputStream inputStream=socket.getInputStream();
StringBuilder sb= newStringBuilder();int i = 0;while (true) {
inputStream.read(receive);
String now= newString(receive);if (i > 8) sb.append(now);if (i > 10) {if (isInteger(now)) break;
}
i++;
}
result=sb.toString();
}catch(Exception e) {//e.printStackTrace();
result="err";
}//释放socket连接
try{
socket.close();
}catch(IOException e) {
e.printStackTrace();
}returnresult;
}public static booleanisInteger(String str) {
Pattern pattern= Pattern.compile("^[-\\+]?[\\d]*$");returnpattern.matcher(str).matches();
}
}