paso de programación del servidor TCP es generalmente
1, para crear un socket, una toma de función ();
2, para establecer el atributo socket, una función setsockopt (); * opcional
3, información de enlace de la dirección IP y el puerto de la toma de corriente, una función bind ();
4, abra el monitor, con la función de escuchar ();
5, conectado para recibir al cliente servido por la función de aceptar ();
6, enviar y recibir datos, un envío de función () y recv (), se read () y write ();
7, desactivar las conexiones de red;
8, cerca del monitor;
cliente TCP programado pasos generales son:
1, crear un socket , una toma de función ();
2, para establecer el atributo socket, una setsockopt función (); * opcional
3, información de enlace de la dirección IP y el puerto a la toma, con la función de * atributos opcionales
4, se proporciona para conectar el otro lado de la dirección IP y el puerto;; bind ()
5, conectado con el servidor, utilizando la función de conectar ();
6, enviar y recibir datos, un envío de función () y recv (), o un read () y write ();
7, desactivar las conexiones de red;
UDP El proceso del servidor es pasos generales:
1, para crear un socket, una toma de función ();
2, para establecer el atributo socket, una setsockopt función (); * Opcional
3, información de enlace de la dirección IP y el puerto de la toma de corriente, una función bind ()
4, se recibe los datos de ciclo, un recvfrom función ();
5, red cerrada conexión;
cliente UDP programado pasos generales son:
1, para crear un socket, una toma de función ();
2, para establecer el atributo socket, una función setsockopt (); * opcional
3, la información de la dirección IP y el puerto a la toma de la unión, con la función bind (); * opcional
4, el otro conjunto de dirección de IP y el puerto otras propiedades;
5, los datos de transmisión, un sendto función ();
6, apagar las conexiones de red;
comandos de red comunes: comando netstat netstat se utiliza para mostrar información .netstat conectarse a la red, tablas de rutas y estadísticas de la interfaz de red, etc, hay muchas opciones que utilizamos la opción -an se utiliza para mostrar el estado detallado de la red. en cuanto a las otras opciones que podemos utilizar para ayudar a
telnettelnet es un control remoto para Orden, pero podemos utilizar este programa para depurar nuestros programas de servidor, como nuestro programa de servidor está escuchando el puerto 8888, podemos utilizar telnet localhost 8888 para ver el estado del servidor de
1 estructura de datos, de direcciones estructura struct sockaddr_in {short sin_family int; * familia /dirección generalmente AF-INET * /unsigned short int sin_port; /* número de puerto * /struct in_addr sin_addr; /* dirección IP * /unsigned sin_zero char [8]; /* relleno 0 para sostener llenos del mismo tamaño usando struct sockaddr Memset () o bzero () * /};
sockaddr struct {unsigned short sa_family; /* familia de direcciones, AF_xxx * /char sa_data [14]; /* 14 bytes dirección de protocolo * /
};
2, DNS estructura struct {char * hostent h_name; /* nombre oficial dominio de host * /char ** h_aliases; /* una el final de la matriz de acoger NULL alias * /int h_addrtype; /* tipo de dirección de retorno, en el entorno de Internet AF-INET * /int h_length; /* longitud del byte de dirección * /char ** h_addr_list; /* en una Toda la dirección final de la matriz 0, incluyendo el anfitrión * /};
funciones de operación
1, socket:
Crea socket descriptor
int socket (int dominio, tipo int, protocolo int); domain = AF_INET , el tipo de socket, type = SOCK_STREAM SOCK_DGRAM o, respectivamente, las conexiones TCP y UDP; protocol = 0.
y devuelve un descriptor de socket número entero.
2.bind:
y usted será un descriptor de socket asociado a un puerto de la máquina (sólo servidor)
int bind (int sockfd, struct sockaddr * my_addr, int addrlen);
my_addr sockfd es un descriptor de socket contiene un puntero al tipo de información de puntero sockaddr la dirección IP y número de puerto local; addrlen = sizeof (struct sockaddr). Devuelve: 0 = éxito; fallido = -1, errno = número de error. Lo siguiente puede ser asignado automáticamente la dirección IP local y la obtención de un número de puerto aleatorio no está ocupada: my_addr.sin_port = 0; /* Sistema de seleccionar aleatoriamente un número de puerto no utilizado * /my_addr.sin_addr.s_addr = INADDR_ANY; /* rellene la dirección IP del * /
3.Conecte:
para establecer una conexión TCP (para el cliente) y el servidor remoto int connect (int sockfd, struct sockaddr * serv_addr , int addrlen); sockfd es objeto de servidor de destino sockt es un puntero a una serv_addr descriptor de dirección IP y número de puerto contenía. Devuelve: 0 = éxito; fallido = -1, errno = número de error.
4, Escucha: después
escuchar las solicitudes de servicio, a bind () int listen (sockfd int, int atraso); sockfd zócalo llamada al sistema devuelve un descriptor de socket; atraso especificar el número máximo permitido de las solicitudes en la cola de solicitudes 20 de forma predeterminada. Devuelve: 0 = éxito; fallido = -1, errno = número de error.
5.accept:
acepta las peticiones de los clientes int aceptar (int sockfd, * addr vacío, addrlen int *); sockfd está escuchando descriptor de socket, direc es un puntero sockaddr_in variables puntero, el almacenamiento de información de la máquina cliente; addrten valor del punto sizeof variable de puntero (struct sockaddr_in) entero. Devuelve: Devuelve con éxito un nuevo descriptor de socket que se utilizará para la nueva conexión. Devuelve -1 y un valor errno conjunto correspondiente cuando se produce un error.
6.Send:
en una caja de conexión de modo de transmisión (TCP) int información de envío (int sockfd, const void * msg, int len, int flags); sockfd se utiliza para transmitir msg punto de datos descriptor de socket es un puntero a los datos a transmitir. Len es la longitud en bytes de datos. banderas establecen en 0 en circunstancias normales.
7.recv:
en el zócalo de recepción conectado (TCP) de datos
int recv (int sockfd, void * buf, int len, banderas unsigned int); aceptar sockfd descriptor de socket de datos; buf está situado para recibir memoria intermedia de datos; len es la longitud de la memoria intermedia. Banderas también ponen a 0. Devuelve: el número de bytes realmente recibidos, si se interrumpe la conexión, devuelve 0,. Cuando se produce un error, y define el valor errno el retorno apropiado -1.
8.sendto:
en ausencia de la conexión de transmisión (UDP) Toma de datos de patrones de sendto int (int sockfd, const void * msg, int len, int flags, const struct sockaddr * a, int tolen); para representar la dirección IP y el puerto de información número de la máquina de destino tolen = sizeof (struct sockaddr). Devuelve: longitud de bytes de datos transmitidos o -1 en realidad cuando un error de transmisión.
9.Recvfrom ()
está conectado para recibir datos en ausencia (UDP) toma forma de realización de int recvfrom (int sockfd, void * buf, int len, banderas unsigned int, struct sockaddr * desde , londesde int *); a partir de la dirección IP y número de puerto almacenados en la máquina fuente. londesde = sizeof (struct sockaddr). Devuelve: el número de bytes de datos desde el depósito real. Devuelve -1 cuando se produce un error, y establece el errno apropiado.
10.Cierre ()
socket liberación, para detener cualquier manipulación de datos cerca (sockfd);
11.shutdown:
está conectado a cerrar la int cheque apagado (int sockfd, int cómo); cómo se puede ajustar a los siguientes valores: · 0 ------- permitió continuar recibiendo datos · 1 ------- autorizadas para continuar el envío de datos · 2- ------ permite que continúe para enviar y recibir datos, entonces se permite llamadas para cerrar () operación de apagado devuelve 0 en caso de éxito, devuelve cuando se produce un error -1 (errno yuxtapuesta correspondiente).
12 Gethostbyname:
Conversión
nombres de dominio y direcciones IP estructura hostent * gethostbyname (const char * nombre);
13.inet_pton funciones :.
la cadena decimal con puntos convertidos en orden de bytes de red valores binarios, la función de las direcciones IPv4 e IPv6 puede ser manejado. int inet_pton (int familia, const char * StrPtr, void * addrptr);
puede ser el primer parámetro o el AF_INET6 AF_INET: El segundo parámetro es un puntero a un puntero a la cadena de punto decimal: tercer parámetro es un puntero a la red puntero del orden de bytes de los valores binarios convertidos. Vueltas: 1 0 --- --- exitosa entrada de expresión no es un formato válido 0 --- fracaso
14.inet_ntop función:
y inet_pton funciones contraria función, es inet_ntop orden de bytes de red valores binarios en cadena de punto decimal. const char * inet_ntop (int familia, const void * addrptr, char * StrPtr len size_t);
El primer parámetro puede ser AF_INET o AF_INET6: El segundo parámetro es un puntero a la red binaria de orden de bytes el valor del puntero; punto después de que el tercer parámetro es un puntero a un puntero a una conversión decimal cadena; cuarto parámetro es el tamaño de la diana, con el fin de evitar el desbordamiento de memoria intermedia que funcionan persona que llama. Devuelve: el puntero apunta al resultado de la NULL éxito --- --- fracaso
A medida que crece la demanda de soluciones de PaaS y DevOps, podemos ver que las aplicaciones her
Al compilar el programa hoy, el error: clase de almacenamiento especificada para el parámetro no se
Microsoft permitirá que los OEM de sus computadoras y sus co-desarrolladores de sistemas descarguen
Para garantizar el funcionamiento normal del sistema Linux y resolver con precisión los diversos pro
Diagnóstico de problemas comunes de la conexión de red del sistema Linux
Resolución de instancias: configuración relacionada con el firewall transparente del sistema Linux
El propietario del sistema operativo: Linux unificará los ríos y lagos
La cantidad de problemas de piratería del servidor Linux y contramedidas
Mensaje del cliente Vsftpd: Ingresando el modo pasivo tres soluciones
Cálculo del tiempo de temporizador STM32
Lagarto literario discreto: recuerde SUSE Linux 20th Anniversary
Administración de memoria virtual para el rendimiento del sistema Linux Test
Umount: /home: dispositivo está ocupado solución
Explicación detallada de la tecnología de ataque y defensa del servidor para el sistema Linux
El sistema Win8 abre la página web, la polea del mouse falla, cómo hacerlo
Cómo revertir el administrador de tareas clásico de Win10 en Win10
Tutorial de la partición del sistema Win7
A través de IIS, el sitio web no admite la descarga ni el acceso a archivos exe.
Cómo realizar el arranque más limpio en Windows XP
depósitos bancarios de enfoque micro paso gráfica enseñanza
Permisos de la carpeta de configuración de Windows 2003
Win10 Mobile RedStone Preview 14283 Resumen del contenido de la actualización
La era de Windows7 habla sobre el sentido común de la memoria virtual y el malentendido