13
我試圖從Java桌面應用程序向J2ME應用程序發送圖像。問題是,我得到這個異常:java.net.SocketException:軟件導致連接中止:套接字寫入錯誤
java.net.SocketException: Software caused connection abort: socket write error
我已經看了看周圍上了網,雖然這個問題並不罕見,我無法找到一個具體的解決方案。在傳輸圖像之前,我將圖像轉換爲字節數組。這些都是在桌面應用程序,並在J2ME分別
public void send(String ID, byte[] serverMessage) throws Exception
{
//Get the IP and Port of the person to which the message is to be sent.
String[] connectionDetails = this.userDetails.get(ID).split(",");
Socket sock = new Socket(InetAddress.getByName(connectionDetails[0]), Integer.parseInt(connectionDetails[1]));
OutputStream os = sock.getOutputStream();
for (int i = 0; i < serverMessage.length; i++)
{
os.write((int) serverMessage[i]);
}
os.flush();
os.close();
sock.close();
}
private void read(final StreamConnection slaveSock)
{
Runnable runnable = new Runnable()
{
public void run()
{
try
{
DataInputStream dataInputStream = slaveSock.openDataInputStream();
int inputChar;
StringBuffer results = new StringBuffer();
while ((inputChar = dataInputStream.read()) != -1)
{
results.append((char) inputChar);
}
dataInputStream.close();
slaveSock.close();
parseMessage(results.toString());
results = null;
}
catch(Exception e)
{
e.printStackTrace();
Alert alertMsg = new Alert("Error", "An error has occured while reading a message from the server:\n" + e.getMessage(), null, AlertType.ERROR);
alertMsg.setTimeout(Alert.FOREVER);
myDisplay.setCurrent(alertMsg, resultScreen);
}
}
};
new Thread(runnable).start();
}
我在局域網發送消息找到了方法,我沒有問題,當我發的不是圖片簡短的文本信息。另外,我使用wireshark,似乎桌面應用程序只發送部分消息。任何幫助將不勝感激。此外,一切工作在J2ME模擬器上。
我已經經歷了這些答案。我查看了Windows事件日誌,但沒有看到任何相關的事件,儘管我沒有經歷過這些日誌的經驗。其次,我也嘗試在shutdownOutput()中添加;但仍然無濟於事。 最後,我從J2ME應用程序中得到一個錯誤,說該套接字已關閉。 – npinti 2010-05-18 23:08:19
呃...我不知道如何,但我似乎現在可以得到它的工作。我嘗試將轉換替換爲整數部分,但是這完全打亂了我的應用程序,完全禁用它。我試着今天發送它,它工作。我的猜測是,這是一些外部原因,可能是路由器重新啓動或其他。 – npinti 2010-05-19 08:17:11