Java套接字服务器和客户端

时间:2012-11-11 05:38:59

标签: java sockets

我遇到了一个奇怪的情况。 我有两个应用程序: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());

1 个答案:

答案 0 :(得分:1)

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

在这种情况下,客户端和服务器应遵循的一件事是使用BufferedReader/Writer,如果数据通道保持打开状态,则应该允许字符串在每{{1}之后读取}}

此外,请确保不会在任何时候调用flush()

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