2

私は昨年、.NETで、基本的にMinecraftサーバーを起動し、それを管理するためのWebベースのGUIを提供する小さなデーモンアプリケーションを作成しました。クラッシュした場合にプロセスを再起動したり、その他の便利な機能を実行したりします。

私たちの会社は最近、最後のプレーヤーが切断されたときに別のプレーヤーが参加するまでサーバーがシャットダウンするようにサーバーをセットアップしたフランスのホスティング会社について聞いた。今、私はこれがどのように可能であるかを考えていて、それについての考えが何であるかを見たかったのです。私のデーモンは、接続されているプレーヤーの数をすでに認識しているので、それは問題ではありません。

私の疑似思考プロセスは...

  • 最後のプレーヤーがサーバーから切断します
  • デーモンがサーバーポートでの接続のリッスンを引き継ぎます
  • 着信接続時に、接続パケットデータを保存し、サーバーサブプロセスを再起動します
  • 保存接続をMinecraftJavaプロセスに渡します

最後のステップをどのように処理するかはまだわかりませんが、それが私が思いついた最善の解決策です。何か考えや提案はありますか?

4

2 に答える 2

0

TCPネットワーク接続を「保存」してから、別のプロセスにリダイレクトすることはできません。これを実装する唯一の方法は、ツールをプロキシサーバーとして機能させ、すべての接続を受け入れ、すべてのデータを別のポートで実行されているサーバーに送信することです。

このような設定では、最初の着信接続時にサーバーを起動できます。

他の唯一の解決策は、たとえばWireshark / Pcapライブラリで使用される方法で、ネットワークインターフェイスへの直接読み取りアクセスを必要とします。それらは、TCP SYNパケットを検出し、それらが着信したときにサーバーを起動することができます。

于 2012-05-02T18:29:06.967 に答える
0

おそらく、一度に接続したいプレイヤーが増えるので、そのアプローチに問題があるかもしれません(サーバーがすぐに起動しないと思います)。

サーバーが起動するまで接続を待機してキューなどに配置し、サーバーに接続(または接続パケットなど)を供給するデーモンが必要です。サーバーが起動し、すべての接続がサーバーに転送されたら、デーモンを「停止」させます(別名、死ぬか、ポートの詰まりを停止します)。

お役に立てれば。

于 2012-05-02T16:35:00.487 に答える