java - 如何在套接字连接中发送不同的数据类型

标签 java sockets io outputstream

我正在尝试制作一个客户端/套接字程序,其中涉及从客户端发送一个字符串(以识别应该使用哪个 key )到服务器,服务器以字节形式发回一个 key ,然后客户端发送一个以字符串形式请求文件,服务器将请求的文件发送给用户,该文件可以用他们的 key 解密。 我了解密码学方面,但我很想知道如何区分向服务器发送字节、字符串或文件以及从服务器发送字节、字符串或文件。我了解如何发送单个流(字节、字符串或文件),但无法找到一种方法在一个流中发送所有这些内容(如果这有意义的话)? 每次我想发送字符串时,是否都必须创建一个新的流或套接字连接,然后创建一个新的流或套接字连接来发送字节,然后创建一个新的流或套接字连接来发送文件?

我可以查找任何资源吗?干杯!

最佳答案

基本上,通过套接字连接发送的是一堆字节。这可以表示字符串、字符或字符串数​​组等。

如果你想在一个数据包中发送所有这些,你需要为每种类型的数据结构指定长度,即字符串最大为 1024 字节,字节最大为 512 字节......等等。这样做将使您能够破译接收端的信息。

如果您没有最大大小并且不想设置它们,那么您可以采取不同的方法并在其自己的数据包中发送每个数据结构。如果您采用此路线,您将需要指定数据包的第一个字节来标记接收器这是什么类型的数据;即 1=字节、2=字符串、3=数组..等等

关于java - 如何在套接字连接中发送不同的数据类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28464762/

相关文章:

java - 使用 Java NIO 套接字转换异常

c - htonl/ntohl 在第二个命令上的值不正确?

c - socket recv() 没有接收到数据

java - FileReader 的优势与 FileInputStream 的优势

java - 使用 dns 种子列表和 java 客户端连接到 MongoDB 3.6

java - 如何为 BinaryTree<T> 类编写 left() 和 right() 方法

Java:部署到服务器后FileNotFound

c++ - 如何将文件流作为类成员

java - Selenium 3.3.1 和 FirefoxDriver 的依赖性错误

Java 小服务程序 : getInitParameter not work in Service()