我是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();
中的消息。
其他信息
当我在设置中杀死应用程序并打开时,我可以发送一次。
任何问题都不要犹豫问我。
谢谢大家!
答案 0 :(得分:0)
您的代码只接受一个连接,处理它,然后退出。它没有你所描述的那样。
你需要一个循环。
您还需要启动一个单独的线程来处理每个连接。
调用一个接受连接send()
的方法是在里面并且回到前面。
答案 1 :(得分:-1)
Serversocket.accept()函数用于接受新客户端并与客户端连接,用于在与服务器连接后需要使用DataInputStream()和DataOutputStream()的消息。发生这种情况是因为服务器第一次接受新客户端并进一步处理,但在此之后它没有获得新连接,并且它等待在serversocket.accept()处的新连接。