我需要使用 UDP 和 TCP 连接将 Unity3D 客户端连接到 Photon Server。可能吗?我在哪里可以读到它?PS 我想使用 TCP 发送大量数据。
3 回答
光子服务器句柄连接对象称为 Peerbase。每个对等点是每个客户端连接。在客户端对等连接中,您只选择协议是 UDP 或 TCP。解决方案是创建两个对等点,一个是 UDP,一个是 TCP,但很难在一个客户端中处理 UDP 和 TCP 对等点以查找播放器信息并发送数据
简单的回答:不。光子服务器不能有超过一种类型的连接。但是,根据您对“服务器”的定义,有一种方法可以做到这一点。作为此解释的基础,让我们将运行在机器上的对象实例称为服务器。服务器正在运行的机器,我们称之为机器。您可以在一台机器上运行多个服务器,它们可以有不同类型的连接。例如,您可以让统一客户端使用 UDP 连接连接到物理服务器,并使用 TCP 连接将客户端连接到您需要的任何其他东西。
Photon 服务器同时支持多种协议。如果您下载了服务器 sdk,请查找 PhotonServer.config:
它包含这样的条目
<UDPListeners>
<UDPListener
IPAddress="0.0.0.0"
Port="5055">
</UDPListener>
</UDPListeners>
和
<TCPListeners>
<TCPListener
IPAddress="0.0.0.0"
Port="4530"
PolicyFile="Policy\assets\socket-policy.xml"
InactivityTimeout="10000"
>
</TCPListener>
</TCPListeners>
无论您选择什么协议,您的客户端都可以通过 udp 或 tcp 连接并相互交互。
有关完整的配置选项,您可以在此处查看:http: //doc.exitgames.com/en/onpremise/current/reference/server-config-settings
当客户端连接时,您可以在服务器端应用程序中查询客户端如何连接,如下所示:
public class YourApplication : ApplicationBase
{
if (initRequest.LocalPort == 5055)
{
//
}
if (initRequest.PhotonPeer.GetListenerType() == ListenerType.TCPListener)
{
//
}
注意:配置中的 UDPListener 在代码中表示为 ListenerType.ENetListener。
您可以在下载的 {sdk}\doc\Photon.SocketServer.chm 或在线http://doc-api.exitgames.com/en/onpremise/current/server/doc/annotated.html中找到服务器 sdk 文档