вот мой поток для TCP сервераjava.net.SocketException сокет закрыт ип expectively в андроида
class Tcpserver implements Runnable{
@Override
public void run() {
try
{
m_server=new ServerSocket(2001);
Log.v("tcp", "srvrsckt crtd");
final Socket connectedsocket=m_server.accept();
Log.v("tcp", "client cnctd");
Message clientmessage=Message.obtain();
Log.v("tcp", "clnt msg obtain");
ObjectInputStream ois= new ObjectInputStream(connectedsocket.getInputStream());
String strMessage=(String) ois.readObject();
clientmessage.obj=strMessage;
Log.v("tcp", "b4 call handlr");
mHandler.sendMessage(clientmessage);
Log.v("tcp", "o/p stm obtain");
Button b=(Button)findViewById(R.id.button2);
b.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
try { Socket connectedsocketdup=connectedsocket;
Log.v("tcp","socketcrtdonclick");
ObjectOutputStream oos=new ObjectOutputStream(connectedsocketdup.getOutputStream());
Log.v("tcp","tcpsrvronclick");
oos.writeObject("Hai....mmx");
//oos.writeChars("hi...mmx");
Log.v("tcp","write");
} catch (IOException e1) {
Log.v("tcp","error"+e);
e1.printStackTrace();
}
}
});
Log.v("tcp", "write");
ois.close();
//oos.close();
m_server.close();
}
catch(Exception e)
{
Message msg3=Message.obtain();
msg3.obj=e.getMessage();
mHandler.sendMessage(msg3);
}
}
}
, когда я назвал по щелчку Fn, нажав на кнопку то ошибку
Java .net.SocketException сокет закрыт
получают
журнал кошки приведен ниже *
03-29 04: 50: 11,530 3482-3482/com.example.pranavtv.loudspeaker В/TCP: socketcrtdonclick 03-29 04: 50: 11,530
3482-3482/com.example.pranavtv.loudspeaker V/tcp: [email protected] 03-29 04: 50: 11.530
3482-3482/com.example.pranavtv.loudspeaker W/System.err: java.net.SocketException: Розетка закрыта 03-29 04: 50: 11.530
3482-3482/com.example.pranavtv.loudspeaker W/System.err: atorg.apache.harmony.luni.net.PlainSocketImpl .checkNotClosed (PlainSocketImpl.java:140) 03-29 04: 50: 11.530 3482-3482/com.example.pranavtv.loudspeaker W/System.err: at org.apache.harmony.luni.net.PlainSocketImpl. getOutputStream (PlainSocketImpl.java:240) 03-29 04: 50: 11.530 3482-3482/com.example.pranavtv.loudspeaker W/System.err: at java.net.Socket.getOutputStream (Socket.java:453) 03-29 04: 50: 11.530 3482-3482/com.example.pranavtv.loudspeaker W/System.err: at com.example.pranavtv.loudspeaker.Wall $ Tcpserver $ 1.onClick (Wall.java:237) 03-29 04: 50: 11.530 3482-3482/com.example.pranavtv.loudspeaker W/System.err: at android.view.View.performClick (View.java:2485) 03-29 04:50: 11,530 3482-348 2/com.example.pranavtv.loudspeaker W/System.err: at android.view.View $ PerformClick.run (View.java:9080) 03-29 04: 50: 11.530 3482-3482/com.example. pranavtv.loudspeaker W/System.err: at android.os.Handler.handleCallback (Handler.java:587) 03-29 04: 50: 11.530 3482-3482/com.example.pranavtv.loudspeaker W/System. err: at android.os.Handler.dispatchMessage (Handler.java:92) 03-29 04: 50: 11.530 3482-3482/com.example.pranavtv.loudspeaker W/System.err: at android.os.Looper .loop (Looper.java:130) 03-29 04: 50: 11.530 3482-3482/com.example.pranavtv.loudspeaker W/System.err: at android.app.ActivityThread.main (ActivityThread.java: 3714) 03-29 04: 50: 11,53 0 3482-3482/com.example.pranavtv.loudspeaker W/System.err: at java.lang.reflect.Method.invokeNative (собственный метод) 03-29 04: 50: 11.530 3482-3482/com.example. pranavtv.loudspeaker W/System.err: at java.lang.reflect.Method.invoke (Method.java:507) 03-29 04: 50: 11.530 3482-3482/com.example.pranavtv.loudspeaker W/System.err: at com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run (ZygoteInit.java:853) 03-29 04: 50: 11.530 3482-3482/com.example.pranavtv.loudspeaker W/System .err: at com.android.internal.os.ZygoteInit.main (ZygoteInit.java:611) 03-29 04: 50: 11.530 3482-3482/com.example.pranavtv.loudspeaker W/System.err: по адресу de.robv.android.xposed.XposedBridge.main (XposedBridge.java:132) 03-29 04: 50: 11.530 3482-3482/com.example.pranavtv.loudspeaker W/System.err: at dalvik.system.NativeStart.main (собственный метод)
*
Это сломано на многих уровнях - в дополнение к попытке асинхронного использования сокета в событии ui, которое, вероятно, произойдет долго после того, как этот сокет был закрыт созданием потока, даже если он все еще открыт вы бы попытались выполнить сетевую операцию в потоке пользовательского интерфейса, которая в большинстве конфигураций сама по себе приведет к исключению. Вам нужно переосмыслить всю структуру вещей, вплоть до взаимодействия сервер-клиент. –