telnet协议作为tcp协议的一种,编程过程中才用soket可以很方便的实现通信。
这里实现的场景是通过android端发送指令到交换机/路由器上,自动配置设备,完成特定的需求。
使用Soket基本原理:
一,初始化一个socket;
二,获取socket输入/输出流;
三,发送/接收数据;
四,数据处理。
实现代码:
1, 初始化一个socket
Socket mysocket;
new Thread(new Runnable() {
@Override
public void run() {
mysocket=new Socket(“10.30.139.199”,80);
//网络操作只能在新线程中操作否则会报错
}
}
2, 获取输入流
InputStream inputStream=mysocket.getInputStream();
3, 先写一个发送数据的方法
public void SendData(String str) throws IOException {
byte[] datatemp =str.getBytes();
byte[] data = new byte[datatemp.length + 2];
char[] closechar = new char[2];
closechar[0] = (char) (10);
closechar[1] = (char)(13);
Charset cs = Charset.forName(“UTF-8”);
CharBuffer cb = CharBuffer.allocate(closechar.length);
cb.put(closechar);
cb.flip();
ByteBuffer bb = cs.encode(cb);
byte[] closebyte =bb.array();
for (int i = 0; i < datatemp.length; i++)
{
data[i] = datatemp[i];
}
data[data.length - 2] = closebyte[0];
data[data.length - 1] = closebyte[1];
DataOutputStream dataOutputStream=new DataOutputStream(outputStream);
dataOutputStream.write(data, 0, data.length);
dataOutputStream.flush() ;
}
4,写一个接收数据的方法
public String Recevie() throws IOException {
byte[] bytes=new byte[1024]; //接收数据多的话需要循环这里接收数据量小就直接接收了
inputStream.read(bytes,0,bytes.length);
return new String(bytes);
}
5,有了基本东西,就可以进行收发数据了
SendData (“username”);
Thread.sleep(1000); //设备有反应速度要有一定的延时等待
SendData (“passwords”);
Thread.sleep(1000);
SendData (“en”);
Thread.sleep(1000);
String result=Recevie();
//接收设备反馈的信息,如果对显示的信息有特殊要求再做进一步处理