emicarra
Member
Hello, i'm trying to make a udp hole punching connection, but i can't get the players to receive messages without opening ports. Here's my code:
CREATE EVENT
ALARM 0
NETWORKING ASYNC EVENT
global.myport, global.otherip and global.otherport are manually added at game start, since i'm not using a master server yet.
So, what i do is:
on Player 1:
global.myport = 8303;
global.otherport = 8304;
global.otherip = (external ip);
on Player 2:
global.myport = 8304;
global.otherport = 8303;
global.otherip = (external ip);
But it only works when either i write 'global.otherip' as my local ip, or when i open the ports on my router.
What am i doing wrong? Thanks
CREATE EVENT
Code:
txt = "None";
connected = false;
socket = network_create_socket_ext(network_socket_udp,global.myport);
if(socket >= 0){
txt = "Waiting";
}
alarm[0] = 1;
Code:
if(!connected){
alarm[0] = 15;
}
var buff = buffer_create(1, buffer_grow, 1);
buffer_seek(buff,buffer_seek_start,0);
buffer_write(buff, buffer_u8, 1);
network_send_udp(socket, global.otherip, global.otherport, buff, buffer_tell(buff));
buffer_delete(buff);
Code:
if(async_load[?"type"] == network_type_data){
var buff = async_load[?"buffer"];
var ip = async_load[?"ip"];
var port = async_load[?"port"];
var s = buffer_read(buff,buffer_u8);
switch(s){
case 1:
txt = "Connected with"+string(ip)+":"+string(port);
connected = true;
break;
}
}
So, what i do is:
on Player 1:
global.myport = 8303;
global.otherport = 8304;
global.otherip = (external ip);
on Player 2:
global.myport = 8304;
global.otherport = 8303;
global.otherip = (external ip);
But it only works when either i write 'global.otherip' as my local ip, or when i open the ports on my router.
What am i doing wrong? Thanks