Ir ao conteúdo
  • Comunicados

    • Gabriel Torres

      Seja um moderador do Clube do Hardware!   12-02-2016

      Prezados membros do Clube do Hardware, Está aberto o processo de seleção de novos moderadores para diversos setores ou áreas do Clube do Hardware. Os requisitos são:   Pelo menos 500 posts e um ano de cadastro; Boa frequência de participação; Ser respeitoso, cordial e educado com os demais membros; Ter bom nível de português; Ter razoável conhecimento da área em que pretende atuar; Saber trabalhar em equipe (com os moderadores, coordenadores e administradores).   Os interessados deverão enviar uma mensagem privada para o usuário @Equipe Clube do Hardware com o título "Candidato a moderador". A mensagem deverá conter respostas às perguntas abaixo:   Qual o seu nome completo? Qual sua data de nascimento? Qual sua formação/profissão? Já atuou como moderador em algo outro fórum, se sim, qual? De forma sucinta, explique o porquê de querer ser moderador do fórum e conte-nos um pouco sobre você.   OBS: Não se trata de função remunerada. Todos que fazem parte do staff são voluntários.
    • DiF

      Poste seus códigos corretamente!   21-05-2016

      Prezados membros do Fórum do Clube do Hardware, O Fórum oferece um recurso chamado CODE, onde o ícone no painel do editor é  <>     O uso deste recurso é  imprescindível para uma melhor leitura, manter a organização, diferenciar de texto comum e principalmente evitar que os compiladores e IDEs acusem erro ao colar um código copiado daqui. Portanto convido-lhes para ler as instruções de como usar este recurso CODE neste tópico:  
viniciusvaz

Chat em C

Recommended Posts

Ola eu gostaria de desenvolver um chat para a rede interna da empresa mas eu nem sei por onde começar alguem pode me ajuda?

O chat seria bem simples somente enviar e receber mensagem(nada de anexo o emotions).

Valeu Galera

Compartilhar este post


Link para o post
Compartilhar em outros sites

isso em C é meio complicado, mas procure estudar sobre envio de mensagens pela rede, não necessariamente em C, porém em outras linguagens que tem mais funcionalidades para isso

Compartilhar este post


Link para o post
Compartilhar em outros sites
  • Autor do tópico
  • Valeu Sylerr, seria mais fácil fazer em html?

    Estava pensando em uma espécie de chat um help desk

    Compartilhar este post


    Link para o post
    Compartilhar em outros sites

    tem programas que são em Java, mas html também tem suas diversidades, porém vai de cada um escolher qual o melhor.

    Compartilhar este post


    Link para o post
    Compartilhar em outros sites

    existem duas maneiras de se fazer um chat convencional:

    1 - Sockets, você maniputa as conexões geralmente o acesso é por algum aplicativo, você vai precisar usar threads. (linguagens recomendadas: JAVA, C# .net). procure por Swing se for em java e WPF se for em c#.net

    2 - HTTP, você disponibiliza um site que pode ter sido feito em java web, PHP, c#, ou qualquer outra linguagem de programação que imprima html. o acesso é via browser.

    eu diria que a 2 forma é mais fácil, mas vai depender do seu nível de conhecimento.

    Compartilhar este post


    Link para o post
    Compartilhar em outros sites

    isso depende sempre de como vai funciona o sistema, se vai ter varias funcionalidades, como chat múltiplo, etc etc

    Compartilhar este post


    Link para o post
    Compartilhar em outros sites

    Eu consigo fazer , mas preciso saber uma coisa , o envio será só entre dois computadores ou mais ?

    Compartilhar este post


    Link para o post
    Compartilhar em outros sites
  • Autor do tópico
  • Valeu Pessoal Pela Atenção!

    Então Rafaelbvj eu gostaria que fosse entre varias máquinas pois eu trabalho com suporte e as vezes eu tenho que sair do meu departamento para explicar algumas coisas muito simples. Mas em qual linguagem você consegue fazer?

    O Spark é um ferramenta para si fazer um chat online?

    Compartilhar este post


    Link para o post
    Compartilhar em outros sites

    Tem uma maneira bem mais fácil de fazer isso, consegui com menos de 50 linhas de código..

    O chat que montei se utilizava de um arquivo para fazer a troca de informações, era preciso que todos os participantes abrissem o chat de uma mesma pasta e assim quando eles mandam mensagem o programa escreve em um arquivo de texto, e de tempos em tempos o programa lê este arquivo de texto para ver se tem alguma mensagem nova para exibir.

    Escrever e ler o arquivo é bem simples, me lembro que o que deu trabalho foi montar um contador para que o programa só exibisse as mensagens recebidas uma vez.

    O chat adicionava o nome de usuário da pessoa antes da mensagem, mas nada impedia que todas as pessoas usassem o mesmo nome de usuário.

    O arquivo usado para troca de informações acabava ficando como um log das conversas, e não tinha criptografia ou segurança nenhuma.

    Se mesmo com essas restrições te interessar, posso procurar o código

    Compartilhar este post


    Link para o post
    Compartilhar em outros sites
  • Autor do tópico
  • marioscs Se voce poder me passar este seu código irá me ajudar muito!

    voce fez ele em C?

    Compartilhar este post


    Link para o post
    Compartilhar em outros sites

    o código fonte esta no computador lá de casa, aqui no meu email só encontrei o executável, mas posso postar o código hoje a noite.

    Ps: esta em c++

    Compartilhar este post


    Link para o post
    Compartilhar em outros sites
  • Autor do tópico
  • Rafaelbvj Legal Teria como voce me mandar o código sou iniciante e nunca ouvi falar desta função

    Compartilhar este post


    Link para o post
    Compartilhar em outros sites

    Conforme havia dito, aqui estão os códigos dos programas para o "chat" em C++

    Para funcionar:

    -Os usuários devem abrir os dois programas (lê + escreve) e em um mesmo local da rede.

    -Antes de rodar o programa crie um arquivo em branco chamado "chat.dll", no mesmo local onde foram compilados os programas. (O aquivo não é uma biblioteca dll, é só o nome mesmo pra confundir..)

    Restrições:

    -Só funciona entre computadores de uma mesma rede.

    -Os usuários podem escolher o mesmo nome de usuário e mudar o nome de usuário a cada mensagem. (rodar este programa em uma sala de aula fara com que os usuários mudem o nome de usuário para o nome do professor e então falem alguma *****)

    Programa que escreve; serve para enviar mensagens para o arquivo "chat.dll"

    #include <iostream>
    #include <fstream>
    using namespace std;

    int main()
    {
    char nick[16]; //guarda o nome de usuário utilizado
    char texto[256]; //guarda o texto que sera enviado

    cout<<"Mack Chat 1.4 by MSCS\n\n";
    cout<<"Digite um nome de usuário!\n"; //solicita um nome de usuário
    cin.getline(nick,16); //salva o nick com no maximo 16 caracteres
    system("cls"); //limpa a tela
    ofstream log("chat.dll",ios::app); //abre o arquivo no final e sem apagar conteudo
    log<<endl<<nick<<" Entrou na sala..";//escreve no log que o usuario entrou na sala
    log.close(); //fecha o log
    do{
    // _flushall(); //limpeza
    system("cls");//limpa a tela
    gets(texto);//salva o texto que sera enviado
    log.open("chat.dll", ios::app); //abre o arquivo no final e sem apagar o conteudo
    log<<endl<<nick<<">>"<<texto;//escreve o nick, os ''>>'' e o texto salvo
    log.close();//fecha o arquivo
    }while(strcmp(texto,"exit"));//executa o laço ate que o usuario digite ''exit''
    //log.open("chat.dll",ios::app);//abre o arquivo
    //log<<nick<<"\nsaiu da sala..";//escreve o nick e informa que saiu da sala
    log.close();//fecha o arquivo
    return 0; //retorno
    }

    Programa que lê; monitora o arquivo do chat e exibi as mensagens novas

    #include <iostream>
    #include <Windows.h>
    #include <fstream>
    using namespace std;

    int main()
    {
    int n=0; //salva o numero de linhas no arquivo
    char linha[256]; //salva o conteudo de uma linha
    ifstream arquivo;//o arquivo para entrada dos dados
    int controle=0;//salva o numero de linha exibidas pelo programa

    arquivo.open("chat.dll"); //abre o log
    arquivo.clear();//limpa os sinalizadores do arquivo
    arquivo.seekg(0, ios::beg);//direciona o carro para o inicio do arquivo
    //----
    while(!arquivo.eof()){
    arquivo.getline(linha,sizeof(linha)); //Conta o numero de linhas
    n++;
    }
    //---
    controle=n; //iguala o controle com o numero de linhas do arquivo para nao exibir o
    //conteudo do arquivo antes da rotina principal ser executada

    for(;{//um laço infinito
    arquivo.open("chat.dll");//abre o arquivo
    n=0;//leva o contador de linha para zero
    arquivo.clear();//limpa os sinalizadores
    arquivo.seekg(0, ios::beg);//leva o carro para o inicio do arquivo
    //***
    while(!arquivo.eof()){
    arquivo.getline(linha,sizeof(linha)); //Conta o numero de linhas no arquivo
    n++;
    }
    //***
    arquivo.clear();//limpa os sinalizadores do arquivo
    arquivo.seekg(0, ios::beg); //abre o arquivo do seu inicio
    if(n>controle){//compara o numero de linhas contadas com o numero de linhas exibidas
    for(int i=0; i<n; i++)
    arquivo.getline(linha,sizeof(linha));
    cout<<linha<<endl;//exibe mais uma linha
    controle++;//incrementa o controle de linhas exibidas
    arquivo.close();
    }
    Sleep(500);//pausa a execução para nao sobrecarregar o sistema
    }//final do laço infinito
    arquivo.close();//fecha o arquivo,(embora a execução nunca cheque aqui)
    return 0;//retorna
    }//fim da função main

    também tem uma versão em c++ builder 6.0, com os dois programas em um só programa, mas a ideia é exatamente a mesma..

    Editado por marioscs
    • Curtir 1

    Compartilhar este post


    Link para o post
    Compartilhar em outros sites
  • Autor do tópico
  • marioscs funcionou certinho man valeu mesmo! ;)

    Rafaelbvj no primeiro arquivo esta dando este erro

    C:\Users\admcpd\Desktop\C\Chat\chat02\chat01.cpp In function `int main(int, char**)':

    53 C:\Users\admcpd\Desktop\C\Chat\chat02\chat01.cpp expected `)' before numeric constant

    no segundo arquivo esta dando este erro

    C:\Users\admcpd\Desktop\C\Chat\chat02\chat02.cpp In function `int main(int, char**)':

    31 C:\Users\admcpd\Desktop\C\Chat\chat02\chat02.cpp expected `)' before "addr"

    31 C:\Users\admcpd\Desktop\C\Chat\chat02\chat02.cpp expected `)' before ';' token

    Compartilhar este post


    Link para o post
    Compartilhar em outros sites
    você nem usou sockets :huh:

    Pra que complicar?

    Faça as coisas o mais simples que puder, porém não as mais simples.

    Albert Einstein

    Compartilhar este post


    Link para o post
    Compartilhar em outros sites

    Não sei se li direito o tópico mas, como a sua aplicaçao vai enviar mensagens para outro pc ?

    Compartilhar este post


    Link para o post
    Compartilhar em outros sites

    não vai enviar nada, vai salvar em um arquivo e outro computador é que se encarrega de ler o arquivo e exibir a mensagem certa.

    Como eu disse, só funciona pra computadores de uma mesma rede.

    A utilidade do meu programa se da em locais como universidades e escritórios, e mais ainda em locais onde os chats são bloqueados. Programas que utilizam as portas de comunicação especificas (sockets) são facilmente bloqueáveis! Para bloquear o meu programa seria necessário impedir a troca de arquivos entre os usuários, o que seria o mesmo que inutilizar a rede..

    Compartilhar este post


    Link para o post
    Compartilhar em outros sites

    Não entendi muito bem seu programa , ele escreve no arquivo e o outro ler e exibe , mas assim só se comunica o próprio pc

    Compartilhar este post


    Link para o post
    Compartilhar em outros sites

    Crie uma conta ou entre para comentar

    Você precisar ser um membro para fazer um comentário






    Sobre o Clube do Hardware

    No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas publicações sobre tecnologia do Brasil. Leia mais

    Direitos autorais

    Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

    ×