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

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

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

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

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

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

×