Java 套接字连接-消息顺序?

Java 套接字连接-消息顺序?,java,sockets,Java,Sockets,我正在编程一个套接字连接。服务器和客户端。服务器通过socket.accept()等待连接则可以处理所有传入的消息 到目前为止还不错,但我如何控制这些消息?目前,我只看到服务器需要某条消息,而客户端必须发送此消息。这可能是一条字符串消息。 但是如果客户端发送另一条消息,例如整数,该怎么办?如何使服务器预期不同的消息?并根据参数类型和参数计数,决定执行哪种方法 或者,套接字只是用于在客户机和服务器之间按众所周知的顺序交换消息 特别是,我想在服务器端提供一个egprocessInteger和getS

我正在编程一个套接字连接。服务器和客户端。服务器通过
socket.accept()等待连接则可以处理所有传入的消息

到目前为止还不错,但我如何控制这些消息?目前,我只看到服务器需要某条消息,而客户端必须发送此消息。这可能是一条
字符串
消息。 但是如果客户端发送另一条消息,例如
整数
,该怎么办?如何使服务器预期不同的消息?并根据参数类型和参数计数,决定执行哪种方法

或者,套接字只是用于在客户机和服务器之间按众所周知的顺序交换消息

特别是,我想在服务器端提供一个eg
processInteger
getString()
方法。若我从客户机发送消息,基于这些消息,我想执行其中一个或其他方法。 我可以通过客户端控制消息传递到哪个方法吗?

Unix风格的套接字(正如Java使用的那样)不提供传递结构化(“类型化”)数据的方法。相反,它们表示任意字节流。只有当客户机和服务器就如何通信(协议)达成一致意见时,才会给出这种结构。正如您可能从文档中注意到的,从套接字中实际获取数据的唯一方法是使用getInputStream(),它允许您读取(),它为您提供单个
字节或
字节[]

例如,如果客户端想要发送一个
字符串
,它可能会将'str'作为消息的前三个字节,如果它是一个
整数
,则它是'int',或'dbl'表示
双精度
,依此类推。如果服务器知道前三个字节表示数据的类型,那么它就能够使用它来确定如何读取消息的其余部分。这是基本上所有联网的基础—客户端和服务器使用相同的“语言”。

Unix风格的套接字(正如Java使用的那样)不提供传递结构化(“类型化”)数据的功能。相反,它们表示任意字节流。只有当客户机和服务器就如何通信(协议)达成一致意见时,才会给出这种结构。正如您可能从文档中注意到的,从套接字中实际获取数据的唯一方法是使用getInputStream(),它允许您读取(),它为您提供单个
字节或
字节[]


例如,如果客户端想要发送一个
字符串
,它可能会将'str'作为消息的前三个字节,如果它是一个
整数
,则它是'int',或'dbl'表示
双精度
,依此类推。如果服务器知道前三个字节表示数据的类型,那么它就能够使用它来确定如何读取消息的其余部分。这是基本上所有联网的基础—客户端和服务器使用相同的“语言”。

Java教程页面非常简单地解释了这一点:

您可以发送可序列化对象,然后在服务器上发送并反序列化。当然,serializable类必须在客户机和服务器中都定义


您可以使用ObjectInputStream和ObjectOutputStream读取和写入这些对象。

Java教程页面非常简单地解释了这一点:

您可以发送可序列化对象,然后在服务器上发送并反序列化。当然,serializable类必须在客户机和服务器中都定义


您可以使用ObjectInputStream和ObjectOutputStream读取和写入这些对象。

套接字连接用于传输您想要的任何类型的消息。消息的“原始”字节通过它发送。由套接字来定义消息的格式(字符数据——字符串、整数或其他类型的对象、二进制数据等);这取决于你。消息的顺序(请求和响应)也由您定义。消息格式、序列和其他行为统称为传输和/或消息“协议”

您可以定义和实现自己的协议,或使用现有协议,或协议的组合,如HTTP、RMI、XML、json等

祝你好运!
Tom

套接字连接用于传输您想要的任何类型的消息。消息的“原始”字节通过它发送。由套接字来定义消息的格式(字符数据——字符串、整数或其他类型的对象、二进制数据等);这取决于你。消息的顺序(请求和响应)也由您定义。消息格式、序列和其他行为统称为传输和/或消息“协议”

您可以定义和实现自己的协议,或使用现有协议,或协议的组合,如HTTP、RMI、XML、json等

祝你好运!
Tom

你可以检查传递的对象是什么实例。你在说什么?是的,我使用这个套接字。好的,也许值得一试。但是我仍然不能真正控制消息顺序。你可以检查传递的对象是什么实例。你在说什么?是的,我使用这个套接字。好的,也许值得一试。但我仍然无法真正控制信息的顺序。