biblioteca C de red para utilizar (a): instalación libuv, tcp cliente multi-roscado, servidores TCP utilizando múltiples hilos

web de referencia: https://github.com/libuv/libuv/blob/master/README.md

https://www.cnblogs.com/cnxkey/articles/10058702.html

Una, la instalación libuv

1, instaladas las ventanas (en el presente documento vs2017 compilado)

  1. Descargar libuv: https://github.com/libuv/libuv

  2. Descargar gyp ( https://github.com/turbulenz/gyp ) colocada bajo la descompresión después libuv / construcción

  3. gyp instalación requiere entorno de pitón, descarga python2.X ( https://www.python.org/ftp/python/2.7.13/python-2.7.13.msi ) Magnitud de la instalación y el entorno de configuración

  4. gyp instalación: cmd introducir libuv / build / YPG en ejecución: setup.py install

  5. herramienta de compilador vs2017 abierta para compilar la versión de depuración de 32 bits aquí (Inicio -> vs2017-> x 86 herramientas, el derecho a ejecutar con privilegios de administrador)

  6. Instalación libuv: Cambie al directorio del proyecto ejecutar vs2017 vcbuild

  7. Cuando haya terminado, en construcción de depuración / lib generará .lib biblioteca, copiarlo incluyen bibliotecas de ingeniería y .lib a su uso

2, montado bajo Linux

  1. Descargar libuv: https://github.com/libuv/libuv

  2. Extracción de alquitrán -zxvf libuv-v1.32.0.tar.gz

  3. Si la falta de libtool biblioteca, por favor instalar yum install libtool

  4.  autogen.sh sh   

  5. ./configure 

  6. hacer 

  7. make check (desconocimiento de error)

  8. make install

  9. Crear un enlace blando ln -s /usr/local/lib/libuv.so.1 /usr/lib64/libuv.so.1

Dos, el uso libuv

1), usando las ventanas

1. Crear un nuevo proyecto vs2017

2, agregue el directorio que contiene los archivos de cabecera libuv, bibliotecas directorio libuv añadido de biblioteca .lib

3, conflicto Dependencias adicionales se suman los elementos necesarios lib biblioteca biblioteca causó ignorado LIBCMTD

Dependencias adicionales:

libuv.lib
Ws2_32.lib
iphlpapi.lib
Userenv.lib
Psapi.lib

No haga caso de biblioteca por defecto específica: LIBCMTD

4, se puede compilar el proyecto

2) usando la siguiente Linxu

1, se puede realizar la g ++ test.cpp -luv

 

Dos, libuv multiproceso de programación TCP cliente y el servidor

Puede referirse al código URL: https: //github.com/wangdamingll/libuv.git

Vs2017 código está escrito, si el error del compilador, por favor, elimine las diferencias de plataforma Linux en el encabezado del archivo en sí

Debe ser eliminado # include "pch.h", que es vs2017 archivos de cabecera utilizados

1, multi-roscado cliente TCP

Ver el archivo anterior URL LibuvClient.cpp

2, el servidor TCP multi-roscado

Ver el archivo anterior URL LibuvServer.cpp

Tres, libuv multiproceso TCP pensamiento cliente / servidor

1, libuv ejemplo de un solo roscado se da oficial asíncrono I / O, y generalmente debe ser suficiente para el uso normal, proporcionada en este documento sólo para proporcionar referencia multiproceso

2, libuv proporcionado uv_queue_work (), si el servidor acepta después de la tarea es empujado al interior de la piscina hilo, pero debido a que el servidor es tcp datos tcp, la forma de realización descrita anteriormente es la consecuencia de tener datos de continuidad puede ya no tcp continuidad, lo que resulta en un paquete fuera de orden, pero también hay que agregar lógica adicional para ajustarse a las pacas de funcionamiento normales no pueden tomarse personalmente creo

3, veo el sitio web oficial, la función libuv, solamente uv_async_send () es seguro para subprocesos, pero el siguiente código (servidor en el código anterior dirección):

No debe ser seguro para subprocesos, pero no probarlo, la esperanza de comprender el gran hermano consejos

4, inconvenientes multihilo está enviando el mensaje de cómo los problemas del cabello, un único subproceso asíncrono de E / S puede ser uv_async_send usada () de devolución de llamada se activa y se envía, pero hay que establecer una tubería multi-multi-roscada entre el trabajador y el libuv multi-hilo, la tubería a leer ciclo de registro de eventos libuv, escribiendo un byte de datos en el subproceso de trabajo a las roscas de la tubería o tuberías de disparo libuv todo el hilo se especifica la lectura de los eventos Enviar, he probado el incidente de tuberías en Linux, se pueden realizar. Añadir su propia a las ventanas. Además, el uso de mecanismo de libuv tubería IPC, debe ser capaz de lograr, no repetirlos aquí

Publicados 155 artículos originales · ganado elogios 15 · vistas 160 000 +

Supongo que te gusta

Origin blog.csdn.net/wangdamingll/article/details/101619464
Recomendado
Clasificación