我在不同的项目中用 Java 制作了一个简单的 TCP 服务器和客户端。当我尝试将字符串发送到我的服务器时它可以工作,但我想将对象发送到服务器。我为该对象创建了类并使其可序列化,但是服务器和客户端在不同的项目中,那么如何让服务器和客户端识别我正在发送的对象?我试图将两个类放在同一个项目中的不同包中,但这样我只能运行服务器或客户端,不是两者。那么我怎样才能将对象从客户端传递到服务器?
问问题
134 次
3 回答
2
如果使用 Java 序列化,则必须具有相同名称的相同类,并且两端最好具有相同的版本。这不是您可以通过 Java 序列化更改的。如果你想做自定义序列化,你可以这样做,但这不是简单的方法。
我建议您有一个带有数据传输对象的 Jar,并与客户端和服务器共享此 jar,这将更容易确保它们相同。
于 2013-10-20T14:16:05.257 回答
1
将您的项目拆分为三个 jar,客户端、服务器和共享。
将传输对象放入共享 jar 并将其部署在客户端和服务器上。为了使序列化工作,您需要在两端的类路径上都有可用的序列化类(并且它们的限定名称必须完全相同,这意味着相同的包和相同的类名)。
于 2013-10-20T16:57:42.237 回答
0
服务器和客户端是两个不同(但相似)的东西。服务器在那里等待客户端的传入请求,客户端就是这样做的,向服务器请求东西。
为了使您的服务器和客户端正常工作,可能存在一些条件:
- 服务器正在运行
- Client知道Server的IP和端口号
有关通过 Java 中的 TCP 发送对象的更简单和最新的解决方案,请参阅此线程。
于 2016-07-24T05:58:58.933 回答