目前,我的服务器和客户端使用如下所示的请求字符串进行通信:
[...]
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 final static int DEFAULT = 1; public final static int LOGIN = 2; 等...
因此Socket包含客户端当前所在的ID,因此服务器知道下一组信息与服务器操作登录相对应。
有没有办法通过套接字发送数据包,其中标头可以是2,数据是用户名和密码?
我很感激所有的帮助,我通过套接字查看了对象,但似乎你需要知道对象的类型。
答案 0 :(得分:2)
这是您在服务器和客户端之间设计应用程序级协议的问题。例如,一旦打开套接字就可以从客户端编写一个字符串,它看起来像'LOGIN \ n',然后是序列化对象。从服务器端,您可以读取它直到行尾字符,然后解释'LOGIN'字符串然后读取对象。
您也可以按照上面的建议使用JSON。
但是,无论您如何决定,都必须首先在客户端和服务器之间定义和建立应用程序级协议。