我正在尝试制作一个跨 TCP 网络的简单游戏。
服务器在 Server.java 中做这样的事情来检查连接:
try
{
server = new ServerSocket(port);
System.out.println("Server started on port " + port);
while (true)
{
socket = server.accept();
System.out.println("A new player has joined the server.");
new Server(socket).start();
}
}
并在 Player.java 中创建一个新客户端:
socket = new Socket(hostname, port);
现在,一切正常,但我需要服务器将 Player 的实例添加到数组列表中,并能够向所有这些实例发送特定数据。它们都有 main 方法,因此一台计算机可以只运行服务器并让其他 4 台计算机通过运行 Player.java 连接到它。如果 Player 所做的只是创建一个新套接字,那么服务器应该如何与每个 Player 交互?
最佳答案
我不确定我是否理解了这个问题。
accept 调用将为每个连接的客户端产生不同的返回值(通常表示客户端地址和端口),因此您需要存储它们中的每一个。 然后您可以通过套接字进行交互,Sun 有一个 pretty good example in its tutorial :
话虽这么说,但不要让自己头疼,而是考虑一下您对游戏的期望表现。如果您use JMS and ActiveMQ,您可以为自己省去很多麻烦并轻松增加可靠性和可扩展性。用于您的通信,而不是自己弄乱套接字。
花时间编写游戏,而不是进行低级套接字编程,除非您正在努力学习。
关于JAVA - 一个简单的服务器看到客户端的困难,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/743066/