Ir para conteúdo
Fórum Script Brasil
  • 0

[HELP] THREAD


SenKiLL

Pergunta

Olá estou com um problema com um programa multi thread, ele possui uma thread para o socket(multi cliente) e outra para alterar a memoria de um determinado processo, porém o programa só executa o thread do socket...

segue abaixo um trecho do codigo.

#include <iostream>
#include <winsock2.h>
#include <windows.h>
#include <tlhelp32.h>
#include <stdio.h>
#include <conio.h>
#include <ctime>
#include <cstdlib> 
#include <string>
#include <shellapi.h>


using namespace std;


void WINAPI ThreadUm(void);
void WINAPI ThreadDois(void);

BYTE newdata[4]; 
DWORD newdatasize = sizeof(newdata);


int player = 0;
int ip = 0;

DWORD WINAPI receive_cmds(LPVOID);  

int socket()
{

DWORD thread;
  
WSADATA data;
SOCKET winsock;
SOCKADDR_IN sock;

printf("Server Mult-threaded connected\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(8888);
  
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);  //thread
}

closesocket(winsock);
WSACleanup();

return 0;
}

DWORD WINAPI receive_cmds(LPVOID lpParam)
{
  
//continuação do socket

}




BOOL SetPrivilege(LPSTR type) // more flexible
{
HANDLE Htoken;
TOKEN_PRIVILEGES tokprivls;
if(!OpenProcessToken( GetCurrentProcess(), TOKEN_ADJUST_PRIVILEGES, &Htoken)){
                      return 0;
                      }
tokprivls.PrivilegeCount = 1;
LookupPrivilegeValue(NULL, type, &tokprivls.Privileges[0].Luid);
tokprivls.Privileges[0].Attributes = SE_PRIVILEGE_ENABLED;
BOOL Success =AdjustTokenPrivileges( Htoken, FALSE, &tokprivls, sizeof(tokprivls), NULL, NULL);
CloseHandle(Htoken);
return Success;

}// end 



int rarray() 
{ 

 srand((unsigned)time(0)); 
     
    for(int i=0; i<sizeof(newdata); i++){ 
         
        newdata[i]=(rand()%100)+1; 

 } 

}// end 


DWORD WINAPI ThreadUm(LPVOID process_name)
//int program(char process_name[32])
{    

    //edição da memoria de um programa

    return 0;    // THE END 
       
}// end 



int main(int argc, char* argv[]){

    SetConsoleTitle("Monitor"); // title console
    printf("////");
    
    socket();


DWORD id[4];
HANDLE th[4];



th[0] = CreateThread(NULL,0,(LPTHREAD_START_ROUTINE)ThreadUm,(char*)"exe.exe",0,&id[0]);
th[1] = CreateThread(NULL,0,(LPTHREAD_START_ROUTINE)ThreadUm,(char*)"exe.exe",0,&id[1]);
th[2] = CreateThread(NULL,0,(LPTHREAD_START_ROUTINE)ThreadUm,(char*)"exe.exe",0,&id[2]);

if(th[0] == 0 || th[1] == 0 || th[2] == 0)
 {
 MessageBox(0,"Ocorreu um erro ao criar as Threads","Erro",0x10);
 return 1;
 }




WaitForMultipleObjects(4,th,FALSE,INFINITE);

    system("pause");
}//end

Diminui um pouco o codigo porque estava extenso para postar.

alguém saberia o que fazer?

Link para o comentário
Compartilhar em outros sites

1 resposta 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.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,3k
    • Posts
      652,4k
×
×
  • Criar Novo...