Java套接字服务器和客户端

标签 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());

最佳答案

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

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

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

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

关于Java套接字服务器和客户端,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13328883/

相关文章:

java - 如何在没有 Spark 的情况下从 S3 读取 Parquet 文件? java

java - 使用 Google Spreadsheet Java API 将数据插入 Google 电子表格

java - 生成的 JSP 类文件位于何处?

node.js - node.js 中的 TCP 聊天服务器架构......在数据库或内存中保存套接字?

c++ - 从 IOCP 线程调用 WSAGetLastError() 返回不正确的结果

java - 如何将秒转换为java.sql.Timestamp?

java - 如何使用 Thymeleaf 模板打印 HashMap 的 ArrayList 中的元素数量?

python - 如何使用Unix Socket在ruby和Python之间进行通信

c - 在 C 中的服务器和客户端应用程序中通过套接字发送和接收 JSON

c - 套接字应用程序无法接收 tcpreplay 发送的数据包