0

我正在经历一个奇怪的情况。我有两个应用程序:Android 中的客户端套接字和 Java 套接字服务器在应用程序启动的上下文中运行服务器。客户端和服务器之间使用 JSON STRING URLEncoder 在每个字段中发送,以避免将字符串解析为 JSON。如果以 JSON STRING 从客户端发送到服务器,则仅到达 1 个帖子。当我尝试发送第二个时没有发送到服务器。这是你知道的地方。现在,如果没有任何特殊格式(例如 ABCDEFG12331)的 STRING 运送总是到达服务器。

例如客户端如何发送或服务器响应:

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());
4

1 回答 1

1

由于您没有过多提及代码,

在这种情况下,客户端和服务器都应该遵循的一件事是使用BufferedReader/Writer,并且如果数据通道保持打开状态,那么应该允许字符串在每个flush().

另外,请确保close()在任何时候都不会调用它。

另一个指针是 - 在服务器端,一旦您获得客户端连接,然后保留 inputStream 和 outputStream 的引用,因为每当发生数据交换时都必须使用它们。否则,从任何其他新参考中,您将无法执行该操作

于 2012-11-11T06:02:50.593 回答