我遇到了一种奇怪的情况。 我有两个应用程序:Android 中的客户端套接字和 Java 套接字服务器在应用程序启动的上下文中运行服务器。 客户端和服务器之间的每个字段都使用 JSON STRING URLEncoder 进行发送,以避免字符串解析为 JSON。 如果以 JSON STRING 从客户端发送到服务器,则仅达到 1 个帖子。当我尝试发送第二个时,未发送到服务器。这是你知道的地方。 现在,如果 STRING 发送时没有任何特殊格式(例如 ABCDEFG12331),则始终会到达服务器。
客户端如何发送或服务器响应的示例:
byte[] data = strText.getBytes("UTF-8");
DataOutputStream d = new DataOutputStream(wsSocket.getOutputStream());
d.write(data);
d.flush();
客户端如何读取或服务器如何读取的示例
int maxBuffer = Math.max(wsIS.available(), 8192);
byte[] buffer = new byte[maxBuffer];
int size = wsIS.read(buffer);
if (size == -1) {
break;
}
StringBuilder str = new StringBuilder();
str.append(new String(buffer, "UTF-8").substring(0, size).trim());
最佳答案
由于您没有过多提及代码,
在这种情况下,客户端和服务器都应该遵循的一件事是使用BufferedReader/Writer
,并且如果数据通道保持打开状态,则应允许读取字符串每次flush()
之后。
此外,请确保 close()
在任何时候都不会被调用。
另一个指针是 - 在服务器端一旦获得客户端连接,然后保留 inputStream 和 outputStream 的引用,因为每当发生数据交换时都必须使用这些。否则,从任何其他新引用,您将无法执行该操作
关于Java套接字服务器和客户端,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13328883/