6

私は現在GTAと呼ばれるゲームのマッチメーカーを開発しています。問題は、ゲームサーバーが7777ポートを使用していることです。プレーヤーがサーバーに参加できるようにするには、このポートを世界に公開する必要があります。ユーザーがルーターに変更を加える。

注:ゲームサーバーは私のものではありません。ソースコードを変更することはできません。起動するだけです。

そのため、 Clingはポートフォワーディングで処理できることを発見しましたが、機能させることはできません。

私が使用しているコード:

public static void openports() throws UnknownHostException {
    InetAddress i = InetAddress.getLocalHost();
    System.out.println(i.getHostAddress());

    UpnpService upnpServiceTCP = new UpnpServiceImpl(new PortMappingListener(new PortMapping(7777, i.getHostAddress(), PortMapping.Protocol.TCP)));
    upnpServiceTCP.getControlPoint().search(new STAllHeader());

    UpnpService upnpServiceUDP = new UpnpServiceImpl(new PortMappingListener(new PortMapping(7777, i.getHostAddress(), PortMapping.Protocol.UDP)));
    upnpServiceUDP.getControlPoint().search(new STAllHeader());
}

誰かがそれを機能させるためのアイデアを持っていますか?

4

2 に答える 2

4

このような portforwad ポートが必要な場合、Cling にはいくつかの問題があります。次のコードを使用する必要があります。

UpnpServiceImpl upnpService = null;
PortMapping[] arr = new PortMapping[2];

    arr[0] = new PortMapping(7777, InetAddress.getLocalHost().getHostAddress(), PortMapping.Protocol.TCP,"My Port Mapping1");       
    arr[1] = new PortMapping(7777, InetAddress.getLocalHost().getHostAddress(), PortMapping.Protocol.UDP,"My Port Mapping2");

    upnpService = new UpnpServiceImpl(new PortMappingListener(arr));            

    upnpService.getControlPoint().search();         

ルーターでUPnPをオンにすることを忘れないでください。

通信が終了したら、次のようにオフにする必要があります。

upnpService.shutdown();
于 2015-04-26T12:11:29.210 に答える