Red de conocimiento informático - Material del sitio web - Cómo escribir un programa sencillo para una sala de chat en lenguaje C

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()

{?

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");

if(connect(*clientfdp, (struct sockaddr *)amp; serveraddr, sizeof(serveraddr)) lt; 0){

printf("error de conexión\n");

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);

}

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>

printf("envío del cliente\n");

return NULL;

}

void *threadrecv(void *vargp)

{

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.