Enviado em 24/03/2013 - 20:57h
boa noite a todos.
#include<sys/types.h>
#include<sys/socket.h>
#include<arpa/inet.h>
#include<stdio.h>
#include<stdlib.h>
#include<pthread.h>
#define PORTA 8888
#define MAXBUF 256
#define MAXCONECT 5
int esock,nsock, test;
struct sockaddr_in server;
struct sockaddr_in client;
char mensagem[MAXBUF];
char resposta[MAXBUF];
int recebidos,enviados;
void* enviar (void* arg){
while(1){
gets(mensagem);
if(send(esock,mensagem,sizeof(mensagem),0)<0){
perror("Erro no envio de dados");
exit(1);
}
}
}
void* receber (void* arg){
while(1){
if(recv(esock,resposta,sizeof(resposta),0)<0){
perror("Erro no recebimento de dados");
exit(1);
}
printf("\nOutro: %s\n", resposta);
fflush(stdout);
}
}
int main(){
pthread_t thread1,thread2;
int esock,nsock, test;
struct sockaddr_in server;
struct sockaddr_in client;
int tam;
/* cria o socket */
if ( (esock = socket(AF_INET, SOCK_STREAM, 0)) < 0 ){
perror("Erro na criacao do socket no servidor");
exit(1);
}
/* inicializa a estrutura endereco/porta */
server.sin_family = AF_INET;
server.sin_port = htons(PORTA);
server.sin_addr.s_addr = INADDR_ANY;
bzero(&(server.sin_zero), 8);
/* associa um número de porta ao socket */
if(bind(esock, (struct sockaddr*)&server, sizeof(struct sockaddr))<0){
perror("Erro na associacao do socket (Bind)");
exit(1);
}
/* coloca o socket em modo "listening"*/
test = listen(esock, MAXCONECT);
if (test < 0){
perror("\nErro na funcao listen.");
exit(1);
}
printf("Aguardando cliente...\n");
while (1){
tam= sizeof(struct sockaddr_in);
nsock = accept(esock,(struct sockaddr *)&client,&tam);
if(nsock <0){
perror("Erro no accept");
continue;
}
printf("Cliente conectado em %s\n", inet_ntoa(client.sin_addr));
pthread_create (&thread1, NULL, &enviar, NULL);
pthread_create (&thread2, NULL, &receber, NULL);
pthread_join(thread1,NULL);
pthread_join(thread2,NULL);
/*do
{
recebidos = recv(nsock,resposta,256,0);
resposta[recebidos] = '{TEXTO}';
printf("Cliente: %s\n",resposta);
printf("Servidor: ");
fgets(mensagem,256,stdin);
mensagem[strlen(mensagem)-1] = '{TEXTO}';
enviados = send(nsock,mensagem,strlen(mensagem),0);
}while(recebidos != -1 && enviados != -1);
if(recv(nsock,resposta,sizeof(resposta),0)<0){
perror("Erro no recebimento de dados");
exit(1);
}
/* envia uma mensagem
if(send(nsock, mensagem, strlen(mensagem),0)<0){
perror("Erro no envio de dados");
exit(1);
}*/
close(nsock);
close(esock);
}
return 0;
}
#include<sys/types.h>
#include<sys/socket.h>
#include<arpa/inet.h>
#include<stdio.h>
#include<stdlib.h>
#include<pthread.h>
#define PORTA 8888
int e_socket, conexao;
struct sockaddr_in destino;
char mensagem[256];
char resposta[256];
void* enviar (void* arg){
while(1){
gets(mensagem);
if(send(e_socket,mensagem,sizeof(mensagem),0)<0){
perror("Erro no envio de dados");
exit(1);
}
}
}
void* receber (void* arg){
while(1){
if(recv(e_socket,resposta,sizeof(resposta),0)<0){
perror("Erro no recebimento de dados");
exit(1);
}
printf("\nOutro: %s\n", resposta);
fflush(stdout);
}
}
int main(){
pthread_t thread1,thread2;
int e_socket, conexao;
struct sockaddr_in destino;
char mensagem[256];
char resposta[256];
int recebidos,enviados;
e_socket=socket(AF_INET,SOCK_STREAM,0);
if (e_socket < 0){
perror("Erro na criacao do socket");
exit(1);
}
destino.sin_family=AF_INET;
destino.sin_port= htons(PORTA);
destino.sin_addr.s_addr=inet_addr("192.168.0.101");
bzero(&(destino.sin_zero),8);
conexao=connect(e_socket,(struct sockaddr *)&destino,sizeof(destino));
if (conexao < 0){
perror("Erro no estabelecimento de conexao");
exit(1);
}
pthread_create (&thread1, NULL, &enviar, NULL);
pthread_create (&thread2, NULL, &receber, NULL);
pthread_join(thread1,NULL);
pthread_join(thread2,NULL);
/*do
{
printf("Cliente: ");
fgets(mensagem,256,stdin);
mensagem[strlen(mensagem)-1] = '{TEXTO}';
enviados = send(e_socket,mensagem,strlen(mensagem),0);
recebidos = recv(e_socket,resposta,256,0);
resposta[recebidos] = '{TEXTO}';
printf("Servidor: %s\n",resposta);
}while(recebidos != -1 && enviados != -1);
if(send(e_socket,mensagem,sizeof(mensagem),0)<0){
perror("Erro no envio de dados");
exit(1);
}
if(recv(e_socket,resposta,sizeof(resposta),0)<0){
perror("Erro no recebimento de dados");
exit(1);
}*/
close(e_socket);
}