Ir ao conteúdo
  • Cadastre-se

Chat em C


viniciusvaz

Posts recomendados

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.

Link para o comentário
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?

Link para o comentário
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

Link para o comentário
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..

Link para o comentário
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

Link para o comentário
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..

Link para o comentário
Compartilhar em outros sites

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades 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

×
×
  • Criar novo...