estou liberando um codigo multi thread para os novatos em socket como eu :mellow:
o codigo consiste em um servidor que aceita varias conexão mostrando o ip do client e tambem quantos player online no servidor bem legal, o client pode ser feito rapidamente tambem lembrando que o codigo e basico nada de mais
o codigo base peguei de um outro forum e editei a maior parte dele mais esta funcionando 100% e um bom codigo para implementar em jogos ou fazer um pequeno sistema de chat vlw galera
Pergunta
ce1o2e
estou liberando um codigo multi thread para os novatos em socket como eu :mellow:
o codigo consiste em um servidor que aceita varias conexão mostrando o ip do client e tambem quantos player online no servidor bem legal, o client pode ser feito rapidamente tambem lembrando que o codigo e basico nada de mais
#include <windows.h> #include <stdlib.h> #include <stdio.h> #include <winsock.h> #include <conio.h> int player = 0; int ip = 0; DWORD WINAPI receive_cmds(LPVOID); int main() { DWORD thread; WSADATA data; SOCKET winsock; SOCKADDR_IN sock; printf("servidor multi-threaded connectado\n\n"); if((WSAStartup(0x101, &data)) == SOCKET_ERROR) { printf("\nerro ao iniciar socket"); getch(); exit(1); } sock.sin_family = AF_INET; sock.sin_addr.s_addr = INADDR_ANY; sock.sin_port=htons(4000); if((winsock = socket(AF_INET, SOCK_STREAM, 0)) == SOCKET_ERROR) { printf("\nerro ao criar socket"); getch(); exit(1); } if(bind(winsock,(SOCKADDR*)&sock,sizeof(sock)) == SOCKET_ERROR) { printf("\nerro ao acessar rede"); getch(); exit(1); } if(listen(winsock, 5) != 0) { printf("\nerro ao criar lista de socket"); getch(); exit(1); } SOCKET client; SOCKADDR_IN from; int fromlen = sizeof(from); while(true) { client = accept(winsock,(struct sockaddr*)&from, &fromlen); ip = (int)inet_ntoa(from.sin_addr); printf("ip: %s\n", ip); CreateThread(NULL, 0, receive_cmds, (LPVOID)client, 0, &thread); } closesocket(winsock); WSACleanup(); return 0; } DWORD WINAPI receive_cmds(LPVOID lpParam) { SOCKET current_client = (SOCKET)lpParam; char recebe[1024]; char enviar[1024]; int byte; player++; printf("client connectado\r\n"); printf("%d player online\n\n", player); while(true) { memset(recebe, 0, 1024); byte = recv(current_client, recebe, 1024, 0); if(byte == -1) { player--; printf("player %s desconectado\n", ip); printf("%d player online\n\n", player); break; } } closesocket(current_client); }o codigo base peguei de um outro forum e editei a maior parte dele mais esta funcionando 100% e um bom codigo para implementar em jogos ou fazer um pequeno sistema de chat vlw galera
se gosto agradeça :closedeyes:
Editado por ce1o2eLink para o comentário
Compartilhar em outros sites
3 respostass a esta questão
Posts Recomendados
Participe da discussão
Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.