Cómo escribir un programa sencillo para una sala de chat en lenguaje C
Así:
#include lt;stdlib.hgt;
#include lt;stdio.hgt;
#include lt ; errno.hgt;
#include lt;string.hgt;
#include lt;unistd.hgt;
#include lt;netdb.hgt;
#include lt;sys/socket.hgt;
#include lt;netinet/in.hgt;
#include lt;sys/types.hgt
#include lt;arpa/inet.hgt;
#include lt;pthread.hgt
#define MAXLINE 100;
void *threadsend(void *vargp);
void *threadrecv(void *vargp);?
int main()
{? p >
int *clientfdp;
clientfdp = (int *)malloc(sizeof(int));
*clientfdp = socket(AF_INET, SOCK_STREAM, 0);
p>struct sockaddr_in serveraddr;
struct hostent *hp;
bzero((char *)amp; serveraddr, sizeof(serveraddr));
serveraddr.sin_family = AF_INET;
serveraddr.sin_port = htons(15636);
serveraddr.sin_addr.s_addr = inet_addr("127.0.0.1"); p>
if(connect(*clientfdp, (struct sockaddr *)amp; serveraddr, sizeof(serveraddr)) lt; 0){
printf("error de conexión\n"); p>
salir(1);
}
pthread_t tid1, tid2;
printf("conectado\n");
while(1){
pthread_create(amp; tid1, NULL, threadsend, clientfdp);
pthread_create(amp; tid2, NULL, threadrecv, clientfdp); p>
}
return EXIT_SUCCESS;
}
void *threadsend(void * vargp)
{
>pthread_t tid2;
int connfd = *((int *)vargp);
int idata;
c
har temp[100];
while(1){
//printf("yo: \n ");
fgets(temp, 100, stdin);
enviar(connfd, temp, 100, 0);
printf("? cliente envía OK\n");
} p>
p>
printf("envío del cliente\n");
return NULL;
}
void *threadrecv(void *vargp) p>
{
char temp[100];
int connfd = *((int *)vargp);
while(1){
int idata = 0
idata = recv(connfd, temp, 100, 0
if(idata gt; 0); ){
printf("servidor:\ns\n", temp);
}
}
return NULL;
}
Información ampliada:
Notas
Al compilar código multiproceso en Linux, el shell indica que la función pthread_create no se puede ejecutar. encontrado porque pthread.h no es Los archivos de biblioteca cargados de forma predeterminada en el sistema Linux deben compilarse usando comandos gcc similares a los siguientes:
gcc echoserver.c -lpthread -o echoserver
Solo preste atención al parámetro -lpthread.