Hallo我试图通过telnet发送固件文件到调制解调器板。 这里是我的代码:java通过telnet发送固件
Socket s = null;
try {
SocketAddress socketAddress = new InetSocketAddress(InetAddress.getByName(addr), 23);
s = new Socket();
s.connect(socketAddress, 1000);
InputStream inputStream = s.getInputStream();
OutputStream outputStream = s.getOutputStream();
outputStream.write((login + "\n") .getBytes());
Thread.sleep(300);
outputStream.write((password + "\n") .getBytes());
Thread.sleep(300);
outputStream.write(("swupdate" + "\n").getBytes());
Thread.sleep(300);
// Open the file that is the first
// command line parameter
FileInputStream fstream = new FileInputStream(path_frm_vdsl);
// Get the object of DataInputStream
DataInputStream in = new DataInputStream(fstream);
BufferedReader br = new BufferedReader(new InputStreamReader(in));
String line;
// Read File Line By Line
while ((line = br.readLine()) != null) {
// Print the content on the console
line = br.readLine();
if (line == null) {
Thread.sleep(1000);
} else {
//System.out.println(line);
outputStream.write(line.getBytes());
Log.v("---", line.getBytes() + "" + consumeInput(500, inputStream));
//Log.v("Update_Modem","Updated " + consumeInput(500, inputStream));
//outputStream.write(line.getBytes());
Thread.sleep(10);
}
}
它只需登录发送swupdate命令和转储固件文件输出。第一行输入后,我有java.net.SocketException:破管 而我不能一次读取所有文件,没有足够的内存异常。 (3Mb)
固件的内容是什么?您正在逐行阅读,如果内容不是文字,则不适用。另外,自从您执行br.readLine两次后,您会丢弃所有其他行。 – 2012-08-07 14:39:21
固件是二进制文件。在这种情况下,你知道更好的方法来读取文件吗? – Raspizdyay 2012-08-07 14:50:11