2017-06-04 8 views
0

GameMaker 1.4を使用して単純なサーバーを作成したいとします。しかし、それは最初の試みで動作したことがない、全く分からないなぜ..Game Makerネットワークのポートバインドに関する問題

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!"); 

メッセージは、「サーバーダウン」になります機能です。ポートに関係なくネットタイプではありません。 同じコードをループで試してみると、2回目の試行で動作します。

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にサーバーを作成することができます。 誰かが私の間違いを指摘できますか?

答えて

0

解説(GMフォーラムのHumayunユーザーから):network_create_serverは0からインデックスを返します。したがって、最初のインデックスが0でfalseを返すので、false/trueとしてチェックすることはできません。 2回目の試行で、sever変数への2番目のインスタンスを作成して、1としてtrueを返すことを説明します。

関連する問題