public String send(String Command) throws Exception {
String ret="";
Socket soc = new Socket(getURL(), getPORT());//getURL=192.168.1.168;getPORT=4016

System.out.println("Connect Telnet:" + getURL() + "-" + getPORT());

DataInputStream din = new DataInputStream(soc.getInputStream());

DataOutputStream dout = new DataOutputStream(soc.getOutputStream());

dout.writeUTF(Command);
System.out.println("send:" + Command);
int re=0;
while (re != -1) {
re = din.readByte();//read();readInt();readUTF();方法都试了结果都不对
System.out.println("int" + re);
Character c = new Character((char) re);//这就开始乱码了
System.out.println("char:" + c);
ret = ret.concat(c.toString());
}


System.out.println("reply:" + ret);
din.close();
dout.close();
soc.close();
return ret;
}这是linux系统下的运行结果
Connect Telnet:192.168.1.168-4016
send:set -t 14:35:51
int-1
char:ï¿¿
reply:ï¿¿
yes Reply: ï¿¿

解决方案 »

  1.   

    有一个检测设备EM50系列连接MOXA机。我需要给他发命令取到相应的数据,Command 变量里面就是命令
      

  2.   

    如:我给他发一个命令:set -t 14:35:51
    应该返回:ok
      

  3.   

    命令:get -t
    返回:2011/8/11 14:29:20
    还有数据命令就不打了
      

  4.   


    StringBuffer sb = new StringBuffer();
    int len = 0;
    byte[] buffer = new byte[4096];
    while ((len = din.read(buffer)) != -1) {
    sb.append(new String(buffer,0,len,"UTF-8"));
    }
    System.out.println(sb.toString());将utf-8替换为你的编码即可
      

  5.   

    用readByte()读出来的是一个字节,而汉字是两个字节,当然是乱码了。