Java 在同一TCP套接字上接收不同类型的对象
这就是交易: 我有一台服务器正在运行,它不断地通过TCP套接字接受客户端:Java 在同一TCP套接字上接收不同类型的对象,java,sockets,tcp,tcpclient,Java,Sockets,Tcp,Tcpclient,这就是交易: 我有一台服务器正在运行,它不断地通过TCP套接字接受客户端: public ArrayList<Socket> lista_users = new ArrayList<Socket>(); 保存数组列表上的套接字。 在我想向我的客户发送不同类型的信息之后,Thread trata_客户。 当我说不同类型的信息时,我的意思是,首先发送警告消息,然后发送对象,然后发送一些消息,然后再次发送对象 最好的方法是什么?使用适当的包装器封装套接字的输出流: :发送基本
public ArrayList<Socket> lista_users = new ArrayList<Socket>();
保存数组列表上的套接字。
在我想向我的客户发送不同类型的信息之后,Thread trata_客户。
当我说不同类型的信息时,我的意思是,首先发送警告消息,然后发送对象,然后发送一些消息,然后再次发送对象
最好的方法是什么?使用适当的包装器封装套接字的输出流: :发送基本数据类型+字符串。 :通过流发送对象。
使用适当的包装器封装套接字的输出流: :发送基本数据类型+字符串。 :通过流发送对象。
接收器也是java应用程序吗?是的,它是基于java的客户端。没有最好的协议。有最密集的协议,很难编码、解码和版本,还有Java的原生序列化协议,对短消息来说效率不高,还有JSON,还有压缩的JSON…下面是一个更好地解释我自己的例子:服务器接受了客户端,if将向所有客户端发送通知消息+我不确定是否必须再次发送新的ArrayList用户。然后,当服务器收到消息1时,他向所有用户发送一个对象,例如日历,等等……所有这些都使用ObjectOutputStream,如果可能的话,接收方也是java应用程序吗?是的,它是基于java的客户机。没有最好的协议。有最密集的协议,很难编码、解码和版本,还有Java的原生序列化协议,对短消息来说效率不高,还有JSON,还有压缩的JSON…下面是一个更好地解释我自己的例子:服务器接受了客户端,if将向所有客户端发送通知消息+我不确定是否必须再次发送新的ArrayList用户。然后,当服务器收到消息1时,他会向所有用户发送一个对象,例如日历,等等……所有这些都使用ObjectOutputStream,如果可能的话,至少在两个best定义下是正确的。但是我的客户怎么知道他收到的是什么类型的东西呢?因为我的服务器可以发送日历类型、数据或其他信息…我需要一个系统,以便客户端能够识别接收对象的类型。。。Thanks@DmitryKvochkinObjectOutputStream处理键入。您只需要在接收端执行instanceof。如果接收端不知道是否需要对象或基元类型,请始终发送并期望对象。@DmitryKvochkin简单地说,如果您通过ObjectOutputStrema发送对象,则通过ObjectInputStream读取它。这在至少两个best定义下是正确的。但是我的客户怎么知道他收到的是什么类型的东西呢?因为我的服务器可以发送日历类型、数据或其他信息…我需要一个系统,以便客户端能够识别接收对象的类型。。。Thanks@DmitryKvochkinObjectOutputStream处理键入。您只需要在接收端执行instanceof。如果接收端不知道是否需要对象或基元类型,请始终发送并期望对象。@DmitryKvochkin简单地说,如果您通过ObjectOutputStrema发送对象,则通过ObjectInputStream读取它。
s = serverSocket.accept();
lista_users.add(s);
avisa_all(lista_users, s);
Thread t_trata_cliente = new Thread(new trata_cliente(lista_users, s));
t_trata_cliente.start(); //this Thread is responsable for interacting with
//the clients (where my question is)