1
我正在編寫一個Android應用程序,通過TCP將數據從android發送到arduino板。出於測試目的,我只是將Android中的字符'A'寫入Arduino。然而,我注意到,寫20-30次後,我得到以下異常:通過同位異常重置Android連接
W/System.err(11561): java.net.SocketException: Broken pipe
W/System.err(11561): at org.apache.harmony.luni.platform.OSNetworkSystem.write(Native Method)
W/System.err(11561): at dalvik.system.BlockGuard$WrappedNetworkSystem.write(BlockGuard.java:284)
W/System.err(11561): at org.apache.harmony.luni.net.PlainSocketImpl.write(PlainSocketImpl.java:472)
W/System.err(11561): at org.apache.harmony.luni.net.SocketOutputStream.write(SocketOutputStream.java:68)
W/System.err(11561): at io.raas.FromBoard.run(FromBoard.java:43)
W/System.err(11561): at java.lang.Thread.run(Thread.java:1019)
這裏是從主要活動呼籲通過TCP發送數據的線程:
/*
* Cleanup: SERVERPORT should be in Constants.java
*/
package io.raas;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.io.PrintWriter;
import java.net.ServerSocket;
import java.net.Socket;
import java.net.UnknownHostException;
import android.util.Log;
class ToBoard implements Runnable {
Socket s = null;
static ServerSocket ss = null;
InputStream i = null;
OutputStream o = null;
public static final int SERVERPORT = 6000;
char flg = 65;
int count = 0;
public void run() {
try {
if(ss==null) { ss = new ServerSocket(SERVERPORT);
s = ss.accept(); }
} catch(Exception e) {e.printStackTrace();}
// change this to while true....
while (true) {
Log.d("SEPERATOR", "-----------------------------------------------------------------------------");
count++ ;
try {
if(flg == 65) {
o = s.getOutputStream();
Thread.sleep(500);
o.write(flg);
o.flush();
}
/*
i = s.getInputStream();
int intRead = i.read();
*/
/*
if(i==null) {
i = s.getInputStream();
}
int intChar = (char)i.read();
Log.d("WRITING_TO_BOARD", "====================================> READ FROM BOARD: " + intChar);
*/
} catch (Exception e) {
Log.d("TX WE HAVE A PROBLEM", "YEA WE DO!");
e.printStackTrace();
}
}
}
}
任何幫助與此將高度讚賞。謝謝!
我很困惑,該類稱爲FromBoard但實際上你向董事會發送數據。你說你發送簡單的'A',但是你寫了__flg ++ __,它會發送A,B,C等,最終退出ASCII範圍。 :::::同樣條件__flg!= -99__似乎註定要失敗,因爲你從65開始。 – ilomambo
感謝您花時間給我寫信給我ilomambo!我正在玩我的代碼,同時試圖調試它...因此不一致。我現在更新了它。現在它應該一直髮送無限期的'A'。謝謝! –
在您發佈的堆棧跟蹤中,在FromBoard第43行中生成了異常,但是您發佈的代碼的第43行是註釋。如果您希望我們認真看看,請發佈您運行的真實代碼。或者用新消息重新發布異常跟蹤。 – ilomambo