我在不同的项目中用Java创建了一个简单的TCP服务器和客户端。当我尝试将字符串发送到我的服务器时它可以工作,但我想将对象发送到服务器。我为该对象创建了类并使其成为可能可序列化,但服务器和客户端在不同的项目中,所以如何让服务器和客户端识别我发送的对象?我试图将两个类放在不同包中的同一个项目中,但这样我只能运行服务器或客户端,而不是两者。那么如何将对象从客户端传递到服务器?
答案 0 :(得分:2)
如果使用Java Serialization,则必须使用相同名称的相同类,并且两端的版本理想相同。这不是Java Serialization可以改变的。如果你想进行自定义序列化,你可以这样做,但这不是一个简单的方法。
我建议你有一个带有数据传输对象的Jar,你与客户端和服务器共享这个jar,这样可以更容易确保它们是相同的。
答案 1 :(得分:1)
将项目拆分为三个罐子,客户端,服务器和共享。
将传输对象放入共享jar中,并将其部署在客户端和服务器上。要使序列化工作,您需要在两端类路径上提供序列化类(并且它们在限定名称中必须完全相同,这意味着相同的包和相同的类名 )。
答案 2 :(得分:0)
服务器和客户端是两个不同(但相似)的东西。服务器在那里等待客户端的传入请求,客户端就是这样做,向服务器请求内容。
为了使您的服务器和客户端运行良好,可能存在以下情况:
有关在Java中通过TCP发送对象的更简单,最新的解决方案,请参阅this thread。