gpt4 book ai didi

java - 发送数据包头和正文

转载 作者:行者123 更新时间:2023-12-03 11:52:57 25 4
gpt4 key购买 nike

目前,我的服务器和客户端使用如下所示的请求字符串进行通信:

[...]
this.outputStream = new PrintWriter(this.socket.getOutputStream(), true);
this.inputStream = new BufferedReader(new
InputStreamReader(this.socket.getInputStream()));
[...]

连接服务器的Socket代表 socket来自 openConnection()服务器套接字。我通过一种方法使用 Socket 发送客户端请求字符串:
public void sendRequest(String requestString) {
this.outputStream.println(requestString);
}

对此的限制是我的服务器和客户端永远不知道正在发送什么类型的请求,我设法稍微能够确定正在发送的内容的唯一方法是在数据之前发送一个事件值,如下所示:

公共(public)最终静态int DEFAULT = 1;
公共(public)最终静态 int 登录 = 2;
ETC...

所以 Socket 包含一个客户端当前所在的 ID,因此服务器知道下一组信息对应于服务器操作登录。

有没有办法通过套接字发送数据包,其中 header 可能是 2,数据是用户名和密码?

感谢所有帮助,我通过套接字查看了对象,但似乎您需要知道传入的对象类型。

最佳答案

这是您如何设计服务器和客户端之间的应用程序级协议(protocol)的问题。例如,您可以在打开套接字后从客户端写入一个字符串,该字符串看起来像“LOGIN\n”,然后是序列化对象。从服务器端,您可以读取它直到行尾字符,然后解释“LOGIN”字符串,然后读取对象。

您也可以按照上面的建议使用 JSON。

但是,无论您决定什么,您都必须首先在客户端和服务器之间定义和建立应用程序级协议(protocol)。

关于java - 发送数据包头和正文,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46109813/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com