[Ajuda] Socket Connect problema
#1

Estou preparando um cliente, testei-o no Windows e funcionou perfeitamente.

Mas quando eu mudei para o meu Linux VPS ubuntu, o servidor simplesmente fecha ao usar o socket_connect

Cуdigo:

Код:
public OnPlayerConnect(playerid)
{
	new pIP[16];
	new string[32];

	bac_Socket[playerid] = socket_create(UDP);
        GetPlayerIp(playerid, pIP, sizeof(pIP));

	IsACConnected[playerid] = false;
	IsCheater[playerid] = false;
	UpdateNeeded[playerid] = false;

	format(string, sizeof(string), "connected |%d| ,%s,", playerid, CURRENT_VERSION); // azeite
    
	socket_connect(bac_Socket[playerid], pIP, 4000);
	socket_send(bac_Socket[playerid], string, sizeof(string));

	return 1;
}
Resultado:
Log do servidor:

Код:
socket_connect(): Socket ID 0 has failed to connect.
Eu acredito que aconteceu porque a porta 4000 (TCP / UDP) nгo estб liberada no Linux. Se esse for o problema, me diga como liberб-lo.
Reply
#2

Cara, ta tudo errado, ja usou sockets antes ?

Sockets й usado para realizar uma conexгo entre o cliente e o servidor para troca de informaзхes. Essa funзгo connect й para vocк se conectar a um servidor que esteja esperando para receber uma conexгo. Nesse cуdigo vocк estб tentando se conectar a maquina do jogador, que por acaso nгo й um servidor.

Quote:
Originally Posted by KoloradO
Посмотреть сообщение
Estou preparando um cliente, testei-o no Windows e funcionou perfeitamente.

Mas quando eu mudei para o meu Linux VPS ubuntu, o servidor simplesmente fecha ao usar o socket_connect

Cуdigo:

Код:
public OnPlayerConnect(playerid)
{
	new pIP[16];
	new string[32];

	bac_Socket[playerid] = socket_create(UDP);
        GetPlayerIp(playerid, pIP, sizeof(pIP));

	IsACConnected[playerid] = false;
	IsCheater[playerid] = false;
	UpdateNeeded[playerid] = false;

	format(string, sizeof(string), "connected |%d| ,%s,", playerid, CURRENT_VERSION); // azeite
    
	socket_connect(bac_Socket[playerid], pIP, 4000);
	socket_send(bac_Socket[playerid], string, sizeof(string));

	return 1;
}
Resultado:
Log do servidor:

Код:
socket_connect(): Socket ID 0 has failed to connect.
Eu acredito que aconteceu porque a porta 4000 (TCP / UDP) nгo estб liberada no Linux. Se esse for o problema, me diga como liberб-lo.
Vocк estб utilizando sockets da forma errada, por isso a conexгo estб falhando.
Reply
#3

Quote:
Originally Posted by RiqueP
Посмотреть сообщение
Cara, ta tudo errado, ja usou sockets antes ?

Sockets й usado para realizar uma conexгo entre o cliente e o servidor para troca de informaзхes. Essa funзгo connect й para vocк se conectar a um servidor que esteja esperando para receber uma conexгo. Nesse cуdigo vocк estб tentando se conectar a maquina do jogador, que por acaso nгo й um servidor.



Vocк estб utilizando sockets da forma errada, por isso a conexгo estб falhando.
Nunca usei, mas eu imaginei que estive algo errado mesmo. porйm eu testei no windows e funcionou tudo perfeitamente. E eu estou usando justamente pra isso, fazer conexгo com um Cliente.

Pode me dar uma dica de como resolver isso?
Reply
#4

Quote:
Originally Posted by KoloradO
Посмотреть сообщение
Nunca usei, mas eu imaginei que estive algo errado mesmo. porйm eu testei no windows e funcionou tudo perfeitamente. E eu estou usando justamente pra isso, fazer conexгo com um Cliente.

Pode me dar uma dica de como resolver isso?
Nгo dб. Socket se conecta a um servidor e nunca a um client. Vocк nгo deveria utilizar sockets pois claramente nгo sabe o que й.
Reply
#5

Quote:
Originally Posted by KoloradO
Посмотреть сообщение
Nunca usei, mas eu imaginei que estive algo errado mesmo. porйm eu testei no windows e funcionou tudo perfeitamente. E eu estou usando justamente pra isso, fazer conexгo com um Cliente.

Pode me dar uma dica de como resolver isso?
Vocк poderia utilizar sockets para se conectar a uma aplicaзгo fora do servidor. Como um software, aplicaзгo web ou mobile.

O que deseja fazer exatamente ?
Reply
#6

Eu estou usando o cliente anti-cheater feito por bruxo00

Link: https://sampforum.blast.hk/showthread.php?tid=604051

ele usa socket
Reply
#7

/
Reply
#8

Pode ser a porta que estб fechada. Vocк deve abrir a porta no firewall ou dependendo do serviзo que vocк contratou terб que pedir a empresa para abrir a porta do firewall
Reply
#9

Para saber se й firewall, em seu computador, abra o prompt de comando e digite:
Код:
telnet <ip_vps>:4000
Caso caso a tela fica preta significa que a porta estб aberta, caso "tentar" acessar pela porta significa que estб fechada.

Se vocк tiver acesso ao SSH do VPS, podes digitar o seguinte comando (caso for CentOS)
Код:
firewall-cmd --zone=public --add-port=4000/tcp --permanent
firewall-cmd --zone=public --add-port=4000/udp --permanent
firewall-cmd --reload
Ubuntu/Debian/OpenSuse nгo possuem firewall nativamente. Se mesmo assim nada funcionar, faзa oque o Dayvision falou, contate o suporte.
Reply
#10

estou com a mesma duvida que ele... se alguйm puder ajudar!
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)