unity服务器无响应什么意思,Unity客户端 - 服务器基本问题

我应该听什么端口,我应该担心的港口 转发“,这是一个短语我经常看到卡住的。

这是给你的。你可以使用任何你想要的端口。正确的做法是为您的游戏选择约10端口,然后选择1端口作为默认端口。例如,我们从端口10000至10010中选择。让我们将端口10000作为您的默认游戏端口。

如果你试图连接到默认的(10000)与NetworkServer.Listen(10000)但还有另一种软件使用的端口或端口不可用,NetworkServer.Listen将返回false,并抛出以下异常:

无法在IP {*}和端口{10000}上打开套接字;支票,请您 网络,最有可能的端口已被占用的

当这种情况发生,你可以尝试下口,旁边另一端口,另外一个,直到你达到你的最大游戏端口是10010。

另外,在您的游戏说明中,您可以指示玩家在连接到其他玩家时遇到问题时打开端口10000至10010。

实现(阅读在代码注释):

int minPort = 10000;

int maxPort = 10010;

int defaultPort = 10000;

//Creates a server then returns the port the server is created with. Returns -1 if server is not created

int createServer()

{

int serverPort = -1;

//Connect to default port

bool serverCreated = NetworkServer.Listen(defaultPort);

if (serverCreated)

{

serverPort = defaultPort;

Debug.Log("Server Created with deafault port");

}

else

{

Debug.Log("Failed to create with the default port");

//Try to create server with other port from min to max except the default port which we trid already

for (int tempPort = minPort; tempPort <= maxPort; tempPort++)

{

//Skip the default port since we have already tried it

if (tempPort != defaultPort)

{

//Exit loop if successfully create a server

if (NetworkServer.Listen(tempPort))

{

serverPort = tempPort;

break;

}

//If this is the max port and server is not still created, show, failed to create server error

if (tempPort == maxPort)

{

Debug.LogError("Failed to create server");

}

}

}

}

return serverPort;

}

用法:

void Start()

{

int serverPort = createServer();

if (serverPort != -1)

{

Debug.Log("Server created on port : " + serverPort);

}

else

{

Debug.Log("Failed to create Server");

}

}

当创建客户端,即,低于,哪个IP地址我应该使用吗?我认为这是客户的设备,但我怎么知道它是什么 是?

在过去,您必须使用UDP将您的IP广播到网络。简而言之,您可以从您的计算机上获得您的IP地址,然后将其广播到255.255.255.255。

您也可以广播到您的IP地址的修改版本。我们假设你的ip是192.168.1.13,你应该删除13(最后一个八位字节)并用255替换它,然后将你的ip广播到192.168.1.255。我解释了这更多here。

通过创建广播API NetworkDiscovery,了解广播是什么,但Unity使它更简单很重要。

要知道要连接到哪个IP地址,只需在Start()函数中在服务器端调用NetworkDiscovery.StartAsServer()即可。

在您的客户端,请致电NetworkDiscovery.StartAsClient(),然后执行OnReceivedBroadcast(string fromAddress, string data);函数。当找到服务器OnReceivedBroadcast(string fromAddress,string data);将被调用,然后您可以使用返回的fromAddress值连接到您的服务器。

这也应该回答你的#3问题。另外,我很高兴你发现我的other答案有用。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值