Anúncio

Comunicação Socket ...
 
Notifications
Clear all

Comunicação Socket entre Client Side e Server Side.

7 Posts
5 Usuários
5 Reactions
146 Visualizações
Will
 Will
(@will)
Posts: 13
Mentor Respeitado
Topic starter
 

 

Faaaala Dev, blz?? 😉 

 

Vou falar de um assunto aqui que nunca vi tutorial na net/foruns(sobre priston) e acredito que algumas pessoas não sabem como funciona ou nem sabem que existe, que é a comunicação de socket entre o client side e o server side. 

Ta, mas o que é isso? Nada mais que uma especie de comunicação entre o front end e o back end, ou seja, poder mandar informações do client side pro server side para poder gravar as informações no banco ou trazer as informações do banco para o game.

 

Primeiramente, você precisa entender o que quer fazer com isso, aí a criatividade é com vocês 😀.

 
Vamos lá!

 

Para iniciar, você precisa criar uma identificação "código" para essa comunicação, precisa criar uma assinatura pra ele que nesse caso é o 0x283332, como se fosse um ID/CODE que você vai usar para identificar ele na comunicação.

#define PACKET_SEND_QUALQER_COISA   0x283332

 

Também será necessário você criar um objeto pacote que seria enviado e/ou recebido por alguma das partes, como por exemplo:

struct sFazerAlgumaCoisa
{
	int size;
	int code;
	double informacaoQueVaiSerEnviadaOuRecebida;
};

 

Então você preenche e envia esse socket:

if (Player && Player->lpsmSock)
{
	sFazerAlgumaCoisa packet;
	ZeroMemory(&packet, sizeof(packet));

	double info = 99999;

	packet.size = sizeof(sFazerAlgumaCoisa);
	packet.code = PACKET_SEND_QUALQUER_COISA;
	packet.informacaoQueVaiSerEnviadaOuRecebida = info;

	Player->lpsmSock->Send((char*)&packet, packet.size, TRUE);
}

Nesse caso eu estou enviando esse pacote do Backend para o Frontend (server para client). Como no exemplo acima eu enviei do client para o game, você precisa receber e manipular esse socket lá no game, mas antes disso você também precisa criar a mesma assinatura no game, assim como fez no server: 

#define PACKET_SEND_QUALQER_COISA   0x283332

Assim como também precisa criar o struct que você passou como parametro pro socket la no server, aqui no game também:

struct sFazerAlgumaCoisa
{
	int size;
	int code;
	double informacaoQueVaiSerEnviadaOuRecebida;
};

Agora você já pode receber esse socket e manipular as informações dele.

No caso de enviar informação para o game, você já tem muitos exemplos lá no fonte netplay.cpp para poder receber e tratar as informações do socket, então só adicionar mais uma condição para verificar a assinatura da comunicação e ser feliz, como por exemplo:

case PACKET_SEND_QUALQUER_COISA:
{
	sFazerAlgumaCoisa* smPacket;
	smPacket = (sFazerAlgumaCoisa*)pData->Buff;
	double teste = smPacket->informacaoQueVaiSerEnviadaOuRecebida;

	//Aqui você pode fazer o que quiser com ela
}

 

Sei que o tutorial não ficou muuuuuito bom, fiz ele com um pouco de pressa e também não sei se vai ser útil para alguém, então se ficou alguma dúvida ou precisarem de um tutorial com mais explicação, pode deixar aqui no comentário que em um futuro próximo se houver a necessidade, eu posso criar algo mais detalhado.

Espero que possa ajudar alguém 😘 

William Varvenczak

 
Postado : 10/05/2025 11:10 am
potras18 and jhonnyDev reacted
(@Anônimo 38)
Posts: 20
Mentor Respeitado Convidado
 

Qual é o seu contato no Discord?

 
Postado : 10/05/2025 10:50 pm
saokizayta
(@saokizayta)
Posts: 6
Apoiador Ativo
 

Postado por: @will

 

Faaaala Dev, blz?? 😉 

 

Vou falar de um assunto aqui que nunca vi tutorial na net/foruns(sobre priston) e acredito que algumas pessoas não sabem como funciona ou nem sabem que existe, que é a comunicação de socket entre o client side e o server side. 

Ta, mas o que é isso? Nada mais que uma especie de comunicação entre o front end e o back end, ou seja, poder mandar informações do client side pro server side para poder gravar as informações no banco ou trazer as informações do banco para o game.

 

Primeiramente, você precisa entender o que quer fazer com isso, aí a criatividade é com vocês 😀.

 
Vamos lá!

 

Para iniciar, você precisa criar uma identificação "código" para essa comunicação, precisa criar uma assinatura pra ele que nesse caso é o 0x283332, como se fosse um ID/CODE que você vai usar para identificar ele na comunicação.

#define PACKET_SEND_QUALQER_COISA   0x283332

 

Também será necessário você criar um objeto pacote que seria enviado e/ou recebido por alguma das partes, como por exemplo:

struct sFazerAlgumaCoisa
{
	int size;
	int code;
	double informacaoQueVaiSerEnviadaOuRecebida;
};

 

Então você preenche e envia esse socket:

if (Player && Player->lpsmSock)
{
	sFazerAlgumaCoisa packet;
	ZeroMemory(&packet, sizeof(packet));

	double info = 99999;

	packet.size = sizeof(sFazerAlgumaCoisa);
	packet.code = PACKET_SEND_QUALQUER_COISA;
	packet.informacaoQueVaiSerEnviadaOuRecebida = info;

	Player->lpsmSock->Send((char*)&packet, packet.size, TRUE);
}

Nesse caso eu estou enviando esse pacote do Backend para o Frontend (server para client). Como no exemplo acima eu enviei do client para o game, você precisa receber e manipular esse socket lá no game, mas antes disso você também precisa criar a mesma assinatura no game, assim como fez no server: 

#define PACKET_SEND_QUALQER_COISA   0x283332

Assim como também precisa criar o struct que você passou como parametro pro socket la no server, aqui no game também:

struct sFazerAlgumaCoisa
{
	int size;
	int code;
	double informacaoQueVaiSerEnviadaOuRecebida;
};

Agora você já pode receber esse socket e manipular as informações dele.

No caso de enviar informação para o game, você já tem muitos exemplos lá no fonte netplay.cpp para poder receber e tratar as informações do socket, então só adicionar mais uma condição para verificar a assinatura da comunicação e ser feliz, como por exemplo:

case PACKET_SEND_QUALQUER_COISA:
{
	sFazerAlgumaCoisa* smPacket;
	smPacket = (sFazerAlgumaCoisa*)pData->Buff;
	double teste = smPacket->informacaoQueVaiSerEnviadaOuRecebida;

	//Aqui você pode fazer o que quiser com ela
}

 

Sei que o tutorial não ficou muuuuuito bom, fiz ele com um pouco de pressa e também não sei se vai ser útil para alguém, então se ficou alguma dúvida ou precisarem de um tutorial com mais explicação, pode deixar aqui no comentário que em um futuro próximo se houver a necessidade, eu posso criar algo mais detalhado.

Espero que possa ajudar alguém 😘 

 

Seria ótimo se você pudesse indicar em quais arquivos adicionar o código. em arquivos do lado do servidor e do lado do cliente.
Como o lado do cliente chamará esses pacotes?

Obrigado por compartilhar com a comunidade, eu realmente apoio você,

 

Priston Tale

 
Postado : 15/05/2025 2:10 pm
Will
 Will
(@will)
Posts: 13
Mentor Respeitado
Topic starter
 

@ryanoviski warwenczack#4794

William Varvenczak

 
Postado : 16/05/2025 2:33 pm
saokizayta and GuiiO reacted
Will
 Will
(@will)
Posts: 13
Mentor Respeitado
Topic starter
 

@saokizayta show mano, assim que tiver um tempinho eu faço um tutorial mais completo então, com um exemplo mais real.

William Varvenczak

 
Postado : 16/05/2025 2:34 pm
GuiiO reacted
b4ruc
(@b4ruc)
Posts: 17
Mentor Respeitado
 

caso alguem esteja interessado no sistema de socket atualizado ou até mesmo sincronizações, só entrar em contato

Devs de qualidade para o seu servidor? vem com a gente

https://www.facebook.com/PristonDevs

 
Postado : 17/05/2025 2:50 am
(@julianojcmpt)
Posts: 2
Aprendiz
 

@b4ruc este sistema socket estou tendo problema para me conectar no server. pode me ajudar?

 
Postado : 13/07/2025 4:47 am
Compartilhar:

Anúncio