【问题标题】:Sending Packets with Java ServerSocket使用 Java ServerSocket 发送数据包
【发布时间】:2019-01-29 00:47:02
【问题描述】:

嘿,我正在用 Java 创建一个多人主题游戏。 我有多线程的服务器输入,现在我正在做服务器发送的东西。

我正在使用 ObjectOutputStream 发送对象,并且正在循环通过已连接客户端的列表。 我现在的问题是:如果我需要线程化这些发送,或者我可以保持我的系统循环通过客户端列表并只使用 write() 方法或者此方法是否有回调,因此互联网连接速度较慢或发送问题卡住或让循环变慢?

public void sendPacketToAllClients(JSONObject object) {
    for(Client c:clients) {
        c.sendPacket(object);
    }
}

客户端的send方法包含:

 oOs.writeObject(object);

【问题讨论】:

  • 您必须自己回答这些问题。如果您的游戏是实时的(与朋友交谈),您绝对不希望玩家之间存在延迟。您不能循环访问客户端。最好在 pub-sub 模型中有监听线程。
  • 循环不会导致延迟,除非循环大小非常大。

标签: java multithreading sockets server client


【解决方案1】:

您似乎在询问轮询与每个连接的线程。两者都是合法的方法。每个连接的线程方法需要更多的努力来实现,但如果您的网络连接很慢,它会更好地扩展。但是,当您开始时,这不太可能。以后可以随时重构。

【讨论】:

    猜你喜欢
    • 2016-01-13
    • 2019-10-16
    • 1970-01-01
    • 2015-09-27
    • 1970-01-01
    • 2011-02-12
    • 2014-06-09
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多