Ir ao conteúdo
  • Cadastre-se
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

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

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

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

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

  • 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 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

Crie uma conta ou entre para comentar

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

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora





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

×