ServerSocket.accept()在第二次不起作用

时间:2015-05-01 16:40:00

标签: android sockets tcp serversocket

我是Android的初学者,我正在尝试开发连接TCP服务器。

我有这堂课:

Application.cfc

我可以在第一时间正常发送消息,但是当我第二次尝试发送消息时,软件仍在排队:public class JavaTCPServer { public static void send(String aMessage) { final String msg = aMessage; Thread thread = new Thread(new Runnable() { @Override public void run() { Socket socket = null; try { ServerSocket serverSocket = GlobalSingleton.getInstance().getServerSocket(); socket = serverSocket.accept(); PrintWriter printWriter = new PrintWriter(socket.getOutputStream(), true); printWriter.println(msg); printWriter.flush(); printWriter.close(); } catch (IOException ex) { ex.printStackTrace(); } finally { if (socket != null) { try { socket.close(); socket = null; } catch (IOException ex) { ex.printStackTrace(); } } } } }); thread.start(); } } private ServerSocket serverSocket; //Created in GlobalSingleton Class... try { serverSocket = new ServerSocket(Constantes.TCP_PORT); } catch (IOException e) { e.printStackTrace(); } 并且不会发送socket = serverSocket.accept();中的消息。

其他信息

当我在设置中杀死应用程序并打开时,我可以发送一次。

任何问题都不要犹豫问我。

谢谢大家!

2 个答案:

答案 0 :(得分:0)

您的代码只接受一个连接,处理它,然后退出。它没有你所描述的那样。

你需要一个循环。

您还需要启动一个单独的线程来处理每个连接。

调用一个接受连接send()的方法是在里面并且回到前面。

答案 1 :(得分:-1)

Serversocket.accept()函数用于接受新客户端并与客户端连接,用于在与服务器连接后需要使用DataInputStream()和DataOutputStream()的消息。发生这种情况是因为服务器第一次接受新客户端并进一步处理,但在此之后它没有获得新连接,并且它等待在serversocket.accept()处的新连接。