Red de conocimiento informático - Espacio del host - Estoy usando bloques de código, ¿cómo puedo copiar el código aquí y conservar los colores y las líneas para que puedas copiarlo directamente a tu computadora?

Estoy usando bloques de código, ¿cómo puedo copiar el código aquí y conservar los colores y las líneas para que puedas copiarlo directamente a tu computadora?

#include

#include

#include

#include

#include

# include

#include

#define PROTOPORT 5188 /* El número de puerto de protocolo predeterminado del socket de escucha*/

#define QLEN 6 /* El tamaño de la cola de solicitudes del socket de escucha*/

#define MAX 1000

HANDLE hMutex;

int flag;

void Send(cliente SOCKET);

void Recv(cliente SOCKET);

int main(int argc,char *argv[])

{

//Inicializar DLL

WSADATA wsaData;

WSAStartup(MAKEWORD(2,2),&wsaData);

struct sockaddr_in servaddr /* Guardar la estructura de la dirección de red del servidor*/

struct sockaddr_in clientaddr /* Guarde el cliente La estructura de la dirección de red final*/

SOCKET listenfd /* Descriptor de socket de escucha*/

SOCKET clientfd /* Descriptor de socket de respuesta*/

int port; /* Número de puerto del protocolo*/

int alen /* Longitud de la dirección*/

memset((char*)& servaddr, 0, sizeof (servaddr) ) ); /* Borrar estructura sockaddr*/

servaddr.sin_family = AF_INET; /* Establecer en familia de protocolos de Internet*/

servaddr.sin_addr.s_addr = INAF_INETs_addr = INADDR_ANY ; * Configure la dirección IP local */

/* Verifique los parámetros de la línea de comando; si se especifica el número de puerto, use el número de puerto; de lo contrario, use el número de puerto predeterminado*/

if (argc > 1){

port = atoi(argv[1]);/* Si se especifica un número de puerto, conviértalo a un número entero*/

} else {

port = PROTOPORT; /* De lo contrario, utilice el número de puerto predeterminado*/

}

if(port> 0) /* Pruebe si el número de puerto es legal*/

servaddr.sin_port=htons((u_short)port);

else{ /* Imprimir mensaje de error y salir*/

fprintf( stderr, "número de puerto incorrecto %s\n", argv[1]);

exit(1);

}

/* Crear un

Conector de transmisión para escuchar*/

listeningfd = socket (AF_INET,SOCK_STREAM,0);

if (listenfd <0) {

fprintf(stderr, "Error en la creación del socket\n");

exit(1);

}

/* Vincula la dirección local al socket de escucha Receptor*/

if (bind(listenfd,(struct sockaddr *)& servaddr, sizeof(servaddr)) < 0){

fprintf(stderr, "vinculación fallida\n ")

exit(1);

}

/* Comience a escuchar y especifique la longitud de la cola de solicitudes del socket de escucha*/

if ( escuchar(escucharfd, QLEN) < 0){

fprintf(stderr, "escuchar archivo\n" );

salir(1);

}

hMutex=CreateMutex(NULL,FALSE,NULL); //crea mutex

/* El bucle principal del servidor acepta y maneja solicitudes de conexión de los clientes */

char sendbuf[MAX];

while(1) {

alen = sizeof(clientaddr); /* Acepta la solicitud de conexión del cliente y genera un socket de respuesta */

if((clientfd = aceptar(listenfd, (struct sockaddr *)& clientaddr, &alen)) < 0 ){

fprintf(stderr, "aceptar fallido\n");

exit(1);

}

flag=1;

printf("Recibió una conexión:%s\n", inet_ntoa(clientaddr.sin_addr ));

/*Crear un hilo para recibir datos en un bucle*/

HANDLE hThread = CreateThread(NULL, 0, (LPTHREAD_START_ROUTINE)Recv,(LPVOID) clientfd,0 ,0);

if(hThread! =NULL)

{

CloseHandle(hThread);

}

while(bandera!=0)

{

gets(sendbuf);

send(clientfd,sendbuf,sizeof(sendbuf),0);//enviar datos

}

}

closesocket(listenfd);

WSACleanup();

devuelve 0;

}

void Recv(cliente SOCKET)

{

char recvbu

f[MAX];

int n=0;

while(strcmp(recvbuf, "salir"))

{

WaitForSingleObject(hMutex,INFINITE); //Bloquear para evitar recibir datos

n=recv(client,recvbuf,sizeof(recvbuf),0);

if(n>0) {

recvbuf[n]=0;

printf(" cliente: %s\n",recvbuf);

}

ReleaseMutex(hMutex);

Sleep(100);

}

closesocket(cliente);

printf("Desconectando de este usuario");

flag=0;

}