我对telnet不是很熟悉,所以我很感激任何愿意的帮助。 我有智能插头,可以通过telnet接口打开或关闭。 我总是通过命令提示符使用telnet连接到服务器Digi X4连接端口(通过> telnet)。如果我想打开/关闭插座,我现在必须输入:" 12设置pow =开/关"然后按Enter键。 我想通过使用telnet客户端的java实现这一点。我现在能够连接到端口(感谢此平台上发布的答案),但发送命令到开关设备开启/关闭对我来说很难。我仍然要输入" 12设置pow =开/关"然后按Enter键。我希望Java发送这个命令。 下面是我的java代码。非常感谢你的帮助。巴布
public class TelnetConnection {
static TelnetClient tc = null;
public static void main(String[] a) throws Exception
{
String[] args = {"122.1222.181.45","8085"};
System.out.println("arg value: "+args);
if(args.length < 1)
{
System.err.println("Usage: Error <remote-ip> [<remote-port>]");
System.exit(1);
}
String remoteip = args[0];
int remoteport;
if (args.length > 1)
{
remoteport = (new Integer(args[1])).intValue();
}
else
{
remoteport = 7000;
}
tc = new TelnetClient();
while (true)
{
boolean end_loop = false;
try
{
tc.connect(remoteip, remoteport);
Thread reader = new Thread (new TelnetClientExample());
tc.registerNotifHandler(new TelnetClientExample());
System.out.println("TelnetClientExample");
reader.start();
OutputStream outstr = tc.getOutputStream();
PrintWriter out = new PrintWriter(outstr);
String buff = "11 set pow=on";
//int ret_read = 0;
do
{
try
{
out.print(buff);
outstr.flush();
}
catch (IOException e)
{
System.err.println("Error");
end_loop = true;
}
}
while((true) && (end_loop == false));
try
{
tc.disconnect();
}
catch (IOException e)
{
System.err.println("Error");
}
}
catch (IOException e)
{
System.err.println("Exception while connecting:" + e.getMessage());
System.exit(1);
}
}
}
}
答案 0 :(得分:0)
尝试tring buff = "11 set pow=on\n"
;服务器可能需要换行来检测命令结束。
顺便说一句,无限发送给服务器的循环看起来很令人担忧。
答案 1 :(得分:0)
您需要发送与'对应'的行终止符,然后按Enter键。
Telnet中的行终止符定义为\r\n
。