端口绑定上的游戏制作者网络问题

Posted

技术标签:

【中文标题】端口绑定上的游戏制作者网络问题【英文标题】:Game Maker Networking Issue on Port Bind 【发布时间】:2017-06-04 06:58:54 【问题描述】:

我想使用 GameMaker 1.4 创建一个简单的服务器。但它的功能在第一次尝试时永远不会起作用,不知道为什么..

var networkType = network_socket_tcp;
var port = 50000;
var maxClients = 32;
var bufferSize = 1024;
var bufferType = buffer_fixed;
var bufferAlign = 1;

server = network_create_server(networkType, port, maxClients);

global.buffer = buffer_create(bufferSize,bufferType,bufferAlign);
sockets = ds_list_create();

if server s_msg("Server is up! Port: " + string(port));
else s_msg("Server is down!");

消息将是“服务器关闭”。无论端口或网络类型。 当我使用循环尝试相同的代码时,它在第二次尝试时有效。 像这样:

var networkType = network_socket_tcp;
var port = 50000;
var maxClients = 32;
var bufferSize = 1024;
var bufferType = buffer_fixed;
var bufferAlign = 1;

server = network_create_server(networkType, port, maxClients);

//////////////////////////////////////////////////////

while (!server && port < 65535)
   port++;
   server = network_create_server(networkType, port, maxClients);


//////////////////////////////////////////////////////

global.buffer = buffer_create(bufferSize,bufferType,bufferAlign);
sockets = ds_list_create();

if server s_msg("Server is up! Port: " + string(port));
else s_msg("Server is down!");

这里的消息将导致“服务器启动!端口:50001”。 正如我所说,无论端口是什么......它都可以在开始时设置为 50001,从而将服务器创建为 50002。 有人能指出我的错误吗?

【问题讨论】:

【参考方案1】:

解决方案(来自 GM 论坛中的用户 Humayun):network_create_server 从 0 返回一个索引,因此不能将其检查为 false/true,因为第一个索引将为 0,返回 false。说明在第二次尝试时,我正在为索引为 1 的服务器变量创建第二个实例,因此返回 true。

【讨论】:

以上是关于端口绑定上的游戏制作者网络问题的主要内容,如果未能解决你的问题,请参考以下文章

游戏制作者网络

请问用unity3d来制作MMO类型网络游戏,服务端该如何制作?听说用Photon网络引擎可以制作,有详细的教程吗?

是否可以用 JavaScript 制作实时网络游戏

怎样可以制作一款游戏

怎么用虚幻4制作游戏?

如何制作小游戏,我想制作一个小游戏,该怎样做呢?