我正在尝试编写一个Android应用程序,一旦启动,它将充当TCP服务器。它是一个非常简单的单线程TCP服务器。
作为一个“测试客户”,我使用的是我从互联网上下载的工具,这不是我制作的。实际上,我已经使用了其中的几个,问题总是一样的。
现在,我连接到服务器时没有任何问题,但当我尝试向它发送消息时,除非我断开客户端应用程序与服务器应用程序的连接,然后一旦断开连接,我发送的所有消息都将作为一条消息接收。
这是我的完整代码:
Thread tcp = new Thread(new Runnable() { @Override public void run() { try { ServerSocket serverSocket = new ServerSocket(65000); while (true) { Socket socket = serverSocket.accept(); handler.post(new Runnable() { @Override public void run() { Toast.makeText(getApplicationContext(), "NEW CONNECTION", Toast.LENGTH_SHORT) .show(); } }); BufferedReader input = new BufferedReader(new InputStreamReader(socket.getInputStream())); String string = input.readLine(); Message msg = new Message(MessageMakerInterface.makeMessage(string), Message.MSG_RECIEVED); messageList.add(msg); handler.post(new Runnable() { @SuppressLint("NotifyDataSetChanged") @Override public void run() { adapter.notifyDataSetChanged(); rvChat.scrollToPosition(messageList.size() - 1); } }); } } catch (IOException e) { e.printStackTrace(); } } }); tcp.start();
我正在使用RecyclerView显示消息,所以我没有显示我的Message
类和MessageMakerInterface
的代码,因为它们与这个问题无关。
为了明确起见,我只希望在运行时接收消息,而不需要客户端断开连接。