나는 애플 리케이션에서 일하고, 나는 TCP 수신기를 만들고 싶어. 많은 사이트에서 도움을 요청했습니다. 예외 오류가 발생합니다. 호출 된 소켓 종료 예외. MY 코드 및 로그 고양이가 아래에 주어집니다.소켓 폐쇄 된 예외?
public class ListenerService extends Service {
//Socket socket;
private ServerSocket serverSocket;
BufferedReader in = null;
static String message=null;
int portNo=1619;
boolean flag=true;
final static String MY_ACTION = "MY_ACTION";
@Override
public void onCreate() {
// TODO Auto-generated method stub
super.onCreate();
new Task().execute();
}
@Override
public void onDestroy() {
super.onDestroy();
flag = false;
if (serverSocket != null) {
try {
serverSocket.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
stopSelf();
Log.d("Server Stoped", "Listener Serverice is Stoped");
// Toast.makeText(this, "Listener Destroyed", Toast.LENGTH_LONG).sho
}
private class Task extends AsyncTask <Void, String, String> {
@Override
protected String doInBackground(Void... params) {
try {
serverSocket = new ServerSocket(portNo);
serverSocket.setSoTimeout(0);
while (flag) {
try {
Socket clientSocket = serverSocket.accept();
BufferedReader inputReader = new BufferedReader(
new InputStreamReader(
clientSocket.getInputStream()));
System.out.println("Client said :"
+ inputReader.readLine());
message = inputReader.readLine();
Log.d("NETWORK-RECEIVE", "Message!:" + message);
publishProgress(message);
clientSocket.close();
} catch (SocketTimeoutException e) {
e.printStackTrace();
}
}
} catch (IOException e1) {
e1.printStackTrace();
} finally {
try {
if (serverSocket != null) {
serverSocket.close();
}
} catch (IOException e) {
e.printStackTrace();
}
}
return message;
}
@Override
protected void onProgressUpdate(String... values) {
// TODO Auto-generated method stub
super.onProgressUpdate(values);
Intent i = new Intent();
i.setClass(getApplicationContext(), MainActivity.class);
i.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
i.addFlags(WindowManager.LayoutParams.FLAG_SHOW_WHEN_LOCKED + WindowManager.LayoutParams.FLAG_DISMISS_KEYGUARD + WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON + WindowManager.LayoutParams.FLAG_TURN_SCREEN_ON);
startActivity(i);
messageSend(message);
}
}
protected void messageSend(String values) {
Log.d("AFTER", values);
Intent intent = new Intent();
intent.setAction(MY_ACTION);
intent.putExtra("message", values);
sendBroadcast(intent);
}
@Override
public int onStartCommand(Intent intent, int flags, int startId) {
// TODO Auto-generated method stub
Log.d("Server Startd","Listener Serverice is running");
//Toast.makeText(getApplicationContext(),"Service Started", Toast.LENGTH_LONG).show();
return super.onStartCommand(intent, flags, startId);
}
@Override
public IBinder onBind(Intent intent) {
// TODO Auto-generated method stub
return null;
}
}
내 logcate는
09-19 12:51:07.229: D/Server Stoped(17878): Listener Serverice is Stoped
09-19 12:51:07.229: W/System.err(17878): java.net.SocketException: Socket closed
09-19 12:51:07.239: W/System.err(17878): at libcore.io.Posix.accept(Native Method)
09-19 12:51:07.239: W/System.err(17878): at libcore.io.BlockGuardOs.accept(BlockGuardOs.java:55)
09-19 12:51:07.239: W/System.err(17878): at java.net.PlainSocketImpl.accept(PlainSocketImpl.java:98)
09-19 12:51:07.239: W/System.err(17878): at java.net.ServerSocket.implAccept(ServerSocket.java:202)
09-19 12:51:07.239: W/System.err(17878): at java.net.ServerSocket.accept(ServerSocket.java:127)
09-19 12:51:07.239: W/System.err(17878): at com.vigosol.tcplistener.ListenerService$Task.doInBackground(ListenerService.java:88)
09-19 12:51:07.239: W/System.err(17878): at com.vigosol.tcplistener.ListenerService$Task.doInBackground(ListenerService.java:1)
09-19 12:51:07.239: W/System.err(17878): at android.os.AsyncTask$2.call(AsyncTask.java:264)
09-19 12:51:07.239: W/System.err(17878): at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:305)
09-19 12:51:07.249: W/System.err(17878): at java.util.concurrent.FutureTask.run(FutureTask.java:137)
09-19 12:51:07.249: W/System.err(17878): at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:208)
09-19 12:51:07.249: W/System.err(17878): at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1076)
09-19 12:51:07.249: W/System.err(17878): at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:569)
09-19 1
일부가 여기에 나를 도울 수 ... 또한 여기에있다? 모든 몸은 내가 코드 여기에 놓치고 무엇을 말해 줄 수?