2017-06-04 109 views
0

我想用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」。 正如我所說的,無論端口。它可以在造成上創建服務器50002 有人能指出我的錯誤開始時設置爲50001?

回答

0

解決方案(來自用戶Humayun在GM論壇中):network_create_server返回一個從0開始的索引,所以它不能被檢查爲false/true,因爲第一個索引將爲0,這將返回false。解釋了第二次嘗試時,我創建了第二個實例,將sever變量索引爲1,因此返回true。