使用套接字在客户端 - 服务器应用程序中发送数据的最佳方式

时间:2011-04-29 14:26:46

标签: java sockets serialization

Hy,我想要做的是在客户端做一些Swing应用程序(使用套接字),另一个用于服务器的应用程序(使用serverSocket)根据请求执行所有数据库工作。我有阅读有关套接字以及如何使用它们,我主要关心的是哪种方式是发送数据的最佳方式。

让我们说我有一个用户集合,我想将它发送给客户端进行显示。这是发送它的最佳方式吗?我想到序列化集合并将其发送给客户端,但我不能转换为类型(java.util.ArrayList)(只是一个例子),因为我不知道客户端应用程序中的用户类,我无法访问用户特定的方法。这提出了一个问题:我应该知道吗客户端应用程序中的用户?所以任何吸烟都很好。

PS。对于数据检索,我使用Hibernate。

3 个答案:

答案 0 :(得分:2)

为了能够反序列化一个对象,你需要在类路径中拥有对象的具体类(以及递归地,对象引用的所有对象)。所以,是的,客户端需要在其类路径中使用User类。

您是否考虑过使用RMI而不是使用普通套接字?这可能会容易得多。

答案 1 :(得分:2)

为了扩展@JB Nizet,RMI会更容易。 JMX会更容易。 Web服务将变得更加容易。

基本上,对于VAST的大多数用例来说,这个问题已经“解决”了,你应该看看那些技术和框架而不是原始套接字。除非你有特殊需要(而且大部分都没有),否则套接字是浪费时间。

Web服务,基于HTTP的POX,远程EJB,远程JMX,RMI以及其他所有内容都可以为您处理所有这些问题。这个轮子不需要重新发明。

Grab Glassfish或Tomcat + JAX-WS,并完成它。写一些逻辑来解决问题,让世界变得更好,而不是几年前已经想到的管道。

答案 2 :(得分:0)

您可以序列化到某个intermediat(xml,json等),将其推送到套接字并绑定回客户端理解的java类。