libGDX 客户端(服务器)客户端连接

Posted

技术标签:

【中文标题】libGDX 客户端(服务器)客户端连接【英文标题】:libGDX client (server) client connection 【发布时间】:2016-07-06 04:20:30 【问题描述】:

我正在尝试创建一个多人游戏。 我认为有三种可能的方法来做到这一点:

1. Port Forwarding

只有少数人会在他们的路由器上打开端口。

2. UDP / TCP hole punching

这非常复杂,并且不适用于每个路由器/NAT。

3. Relay Server

我认为这是完成多人游戏的最简单方法。 所以我的计划是建立一个到 php 服务器的套接字连接,该服务器也将与另一个玩家建立一个套接字连接并传递数据。

当时我在 Java 中有一个客户端部分和一个测试服务器部分:

SocketHints hints = new SocketHints();
Socket client = Gdx.net.newClientSocket(Net.Protocol.TCP, textfield.getText(), 9021, hints);
       try 
               client.getOutputStream().write((textfield2.getText() + "\n").getBytes());
            catch (IOException e) 
                e.printStackTrace();
           

new Thread(new Runnable() 
        @Override
        public void run() 
            ServerSocketHints serverSocketHint = new ServerSocketHints();
            serverSocketHint.acceptTimeout = 0;
            ServerSocket serverSocket = Gdx.net.newServerSocket(Net.Protocol.TCP, 9021, serverSocketHint);
            while (true) 
                Socket socket = serverSocket.accept(null);
                BufferedReader buffer = new BufferedReader(new InputStreamReader(socket.getInputStream()));
                try 
                    status += "Receiving message: \"" + buffer.readLine() + "\"\n\n";
                 catch (IOException e) 
                    e.printStackTrace();
                
            
        
    ).start();

如何从客户端的套接字连接接收数据?

有没有更好的方法来做到这一点?

【问题讨论】:

【参考方案1】:

那么,你想用 PHP 做一个套接字服务器吗?我不推荐它。尝试使用kryonet。它是一个 java Socket 客户端和服务器,在 Java 中使用起来很简单。

如果您想使服务器联机,请在您的服务器上使用可用的公共 IP 运行 Kryonet Socket 服务器。

【讨论】:

以上是关于libGDX 客户端(服务器)客户端连接的主要内容,如果未能解决你的问题,请参考以下文章

VNC客户端一直连接中,但是就是连接不上

客户端怎么连接服务器

C# TcpListener如何知道客户端已经断开连接

Cobaltstrike(一)客户端连接

急急急!!!Oracle在设置客户端网络连接时,测试显示ORA:12357连接关闭。

我的服务器如何知道客户端已断开连接?