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