Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/158.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 关于编写基于客户端-服务器的游戏的建议_Java_C++_Applet - Fatal编程技术网

Java 关于编写基于客户端-服务器的游戏的建议

Java 关于编写基于客户端-服务器的游戏的建议,java,c++,applet,Java,C++,Applet,我正在考虑编写一个基于服务器的游戏,几个客户端程序连接到它。这个游戏基本上是由一个用户可以“接受”的项目列表组成的,它将从所有连接的计算机的列表中删除它,这需要快速更新 我想用java applet来为客户端使用,因为我希望它是便携式的,并且从浏览器中运行,主要是在Windows中,而且更新速度很快,或者C++上运行的java服务器或当前在Linux上运行的Java服务器只是一个家庭服务器,但可能要运行在VPS上。 这个游戏的前一个“化身”在浏览器中运行,并使用PHP+mySQL作为后端,但是当

我正在考虑编写一个基于服务器的游戏,几个客户端程序连接到它。这个游戏基本上是由一个用户可以“接受”的项目列表组成的,它将从所有连接的计算机的列表中删除它,这需要快速更新

我想用java applet来为客户端使用,因为我希望它是便携式的,并且从浏览器中运行,主要是在Windows中,而且更新速度很快,或者C++上运行的java服务器或当前在Linux上运行的Java服务器只是一个家庭服务器,但可能要运行在VPS上。 这个游戏的前一个“化身”在浏览器中运行,并使用PHP+mySQL作为后端,但是当几个人连接到大约8个人时,服务器会被淹没很多,这最终需要处理更多。 用户可能都位于相同的物理位置,具有相同的公共IP地址,系统每秒会收到几个请求,所有这些都需要将列表发送回客户端

有些计算机可能有防火墙限制,所以建议使用HTTP流量、自定义端口,或者通过SSH或某些现有协议

有人能给我一些建议吗?线程、一个项目的多个请求、工具、数据库mySQL?或API,这些可以帮助我开始这个项目吗?我更喜欢后端的C++,因为它会更快,但是使用java可以让我重用代码。
谢谢

> P>对于任何寻找C++的良好网络API的人,我总是建议。它具有独立于平台的优点,因此可以编译一个用于Linux、Windows等的服务器。但是,如果您对C++模板/代码不太熟悉,代码可能会有点压倒。看看,试试看

在一般建议方面。根据上面的描述,您似乎需要一个相对简单的服务器。我建议保持非常基本的单线程轮询循环。从连接的客户端读取消息并等待多个套接字,然后做出相应的响应。这就消除了多次访问列表和其他同步问题带来的任何问题

我也可以建议,在你重新写你最初的化身之前。如您所述,尝试改进它:

系统每秒会收到几个请求,所有这些都需要将列表发送回客户端


既然每个请求都会从此列表中删除一个项目,为什么不通知用户删除了哪个项目,而不是通过网络一次又一次地发送整个列表?如果这个列表有任何显著的大小,这个微小的变化将导致很大的改进。

< P>我不会因为速度单独使用C++。性能上的差异不太可能对你的比赛产生真正的影响。你的网络很可能会影响性能差异,除非你在客户端和服务器之间有10个GIE,否则我会使用C++或java,因为你会先使用它来工作。旧版本的问题是我无法进行推送,因此我使用轮询,apache中充斥着请求。另外,您建议为每个客户端设置一个线程循环,还是为所有客户端设置一个线程循环?我建议使用单线程循环,这仅仅是因为您不必担心多线程服务器带来的过多同步问题。只有当一个客户机的请求占用我的线程足够长,从而对其他客户机的需求产生不利影响时,我才会切换到线程服务器。基于你的描述,情况并非如此。谢谢,我可能会使用C++,因为我所做的唯一的java是Android需要为客户学习Swing。