我使用套接字为2D自上而下的RPG游戏编写了一个客户端 - 服务器对。但是,我不清楚如何传输用户想要做的事情。
我是否只需传输一个字符串,如“向北移动”,然后使用switch语句来决定要采取的操作或是否有更优雅的解决方案?
答案 0 :(得分:1)
如果客户端和服务器都是java程序,那么我会使用Command模式,其中每个命令类执行特定的工作(例如在您的情况下为“Move north”),并在客户端之间交换命令对象和服务器。
我们过去常常在我们的企业应用程序中使用这种方法(虽然不是游戏),同时实现多主复制,并且在任何地方都没有任何if / else链或switch语句,它是相当可扩展的,只需接收命令并调用command.execute ()而不用担心命令是什么。
答案 1 :(得分:0)
您可以将来自Socket的Input / OutputStream对象与其他流类型(例如ObjectOutputStream / ObjectInputStream)包装在一起,从而允许您读/写完整对象和原语直接键入流,就像使用这些相同的流类型将数据读/写到文件系统上的文件一样。
读取/写入网络与从/向任何其他地方读取/写入没有什么不同,除了在网络中您必须首先通过套接字建立连接。一旦你有了这个套接字和正确的流类型设置,你就可以像在应用程序中的任何其他地方一样读/写数据。
答案 2 :(得分:0)
我认为您应该选择Serialize库来执行此操作,而不是从流中进行原始解析。
我建议使用Protocol Buffers或FlatBuffers。
只需传输字节数组,它们就会为你解析为Object。