JAVA - 一个简单的服务器看到客户端的困难

标签 java networking sockets tcp

我正在尝试制作一个跨 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/

相关文章:

Java boolean null 转换

linux - Recv-Q 和 Send-Q 的使用

sockets - 在 Tomcat/Jetty 上设置套接字发送缓冲区大小

networking - 如何获取服务器上正在使用的端口列表

java - 如何使用Java中的objectinputstream多次从服务器读取文件

Java SSL 套接字分层在现有套接字 SSLSocketFactory : does it require a host parameter?

python - 服务器的非阻塞套接字

java 正则表达式匹配 &[text(text - text text) !text]

java - Findbugs - 在读取输入流中处理空检查和编码

java - 如何更新代表 map /关卡的字符串;尝试编写一个推箱子游戏