Red de conocimiento informático - Problemas con los teléfonos móviles - función socket linux c send()

función socket linux c send()

Le daré un fragmento de código compilado y ejecutado en Linux, con comentarios simples, client.c es el siguiente:

La función send() se encuentra al final del cliente. c

#includelt;stdio.hgt;

#includelt;stdlib.hgt;

#includelt;string.hgt;

#includelt;errno.hgt;

#includelt;string.hgt;

#includelt;errno.hgt;

#includeslt;errno.hgt;

#includelt;string.hgt;

#includelt;errno.hgt;

#includelt;sys/types.hgt;

#includelt; sys/socket.hgt;<

#includelt;netinet/in.hgt;

#define?La longitud de los mensajes enviados y recibidos

#define?PORT ?6666//port?

int?main(int?argc, char**?argv)

{

intsockfd,?n;

charrecvline[MAXLINE],?sendline[MAXLINE];

struct?sockaddr_inservaddr;

if(?argc?! =?2 ){

printf("uso:?./client?lt;ipaddressgt;\n");?// uso

salir(0);

}

if(? (sockfd?=?socket(AF_INET,?SOCK_STREAM,?0))?lt;?0){//Crear socket, no conectado

printf ("crear?socket? error:?s(errno:? d)/n",?strerror(errno),errno);

salir(0);

}

//memset(dirección de estructura, borrar, longitud para borrar); borrar struct servaddr y establecer todos los datos de la estructura en 0

//Igual que bzero(dirección de estructura, longitud para borrar) ; borrado de forma predeterminada

p>

memset(amp;servaddr,?0,?sizeof(servaddr));?

servaddr.sin_family?=?AF_INET;/sa_family es el tipo de comunicación, el valor más utilizado es "? AF_INET"

servaddr.sin_port?=?htons(PORT);?//número de puerto

//servaddr.sin_addr .s_addr=inet_addr(argv[1]);?/ /IP del servidor, las siguientes funciones son las mismas

if(?inet_pton(AF_INET,?argv[1],?amp;servaddr.sin_ad

dr)? (struct?sockaddr*)amp;servaddr,?sizeof(servaddr))?lt;?0){?

printf("connect?error:?s(errno:?d)\ n", strerror(errno), errno);

salir(0);

}

printf("enviar?msg?to?servidor:? \n");

fgets(sendline,?MAXLINE,?stdin);?//Ingrese la información enviada al servidor

if(?send(sockfd,?sendline, ? strlen(sendline),?0)?lt;?0)?//Enviar información al servidor

{

printf("send?msg?error:?s( error: ? d)/n",?strerror(errno),?errno);

salir(0);

}

cerrar(sockfd) ;? //Cerrar el socket

exit(0);

}

Programa del servidor: server.c de la siguiente manera: #includelt;

}

p>

#includelt;stdlib.hgt;

#includelt.string.hgt;

#includelt ;errno.hgt;

#includelt; sys/types.hgt;

#includelt;sys/socket.hgt;

#includelt; .hgt;

#define?

p>

#define?

int?main(int?argc, char**?argv)

{

intlistenfd, ?connfd;

struct?sockaddr_in?servaddr;

charbuff[MAXLINE];

int? n;

if(? (listenfd?=? socket(AF_INET,?SOCK_STREAM,?0))?==?-Crear socket

printf("create?socket?error :?s(errno:?d)/n", strerror( errno), errno);

salir(0);

}

memset( amp;servaddr,?0,?sizeof(servaddr));/ /Estructura clara

servaddr.sin_family?=?AF_INET;?//sa_family es el tipo de comunicación, el valor más utilizado es "? AF_INET"

servaddr.sin_addr.s_addr?=? htonl(INADDR_ANY);?//Especificar para aceptar cualquier conexión

servaddr.sin_port?=?htons(PORT);?/ /Puerto de escucha

// Vincula la dirección a la interfaz del socket

if(?bind(listenfd,?(struct?sockaddr*)amp;servaddr,?sizeof(servaddr)) ?==?-1){

pr

intf("bind?socket?error:?s(errno:? d)\n",strerror(errno),errno);

salir(0);

}

if(?listen(listenfd,?10)? ==?-1){// Empieza a escuchar, el número máximo de solicitudes es 10, puedes configurarlo tú mismo

printf ("escucha ?socket?error:?s(errno:? d)\n",strerror(errno),errno);

salir(0);

}

printf("======esperando?la?solicitud del cliente======\n");

mientras(1){

?// Establecer comunicación y esperar a que la función connect() del cliente se conecte if(? (connfd?=?accept(listenfd,? (struct?sockaddr*)NULL,?NULL))?==? -1)

?{ printf("aceptar?socket?error:?s(errno:? d)",strerror(errno),errno); continuar } n?=?recv(connfd, ?buff,?MAXLINE ,?0);?//n El error se puede determinar. La función recv() se puede utilizar directamente aquí

//La información recibida se almacena en buff[n] ?\0';?// agregar terminador printf("recv?msg?from?client:? s\n",?buff);

}

cerrar(escucharfd);

p>

}

上篇: ¿Qué es "material" en inglés? 下篇: PD ¿Cómo dibujar a Iron Man? PS es un software muy potente. Sus ventajas incluyen potentes herramientas de deformación, modos de capa, herramientas de ajuste de curvas, etc. ¡Se puede utilizar no solo para procesar imágenes, sino también para dibujar ilustraciones y pinturas originales realistas! A continuación compartimos un tutorial de dibujo de PS: ¡Dibuja Iron Man en PS! El tutorial es bastante detallado, espero que puedas aprenderlo ~ Pasos para dibujar Iron Man en PS: Primero abre PS e importa el material de dibujo lineal de Iron Man. Luego todas las líneas provienen del dibujo lineal: Primero crea una nueva capa en blanco. Seleccione la herramienta Pluma, trace el casco, presione Ctrl Intro para ingresar a la selección y complete la selección con rojo básico. Como se muestra en la imagen, en cuanto al color del área seleccionada, puedes encontrar una imagen de Iron Man en Internet y usar la herramienta cuentagotas para absorber el color y rellenarlo. Reduzca la opacidad de la capa para ver fácilmente las líneas dibujadas: luego cree una nueva capa en blanco. Y use la herramienta de lápiz para trazar el contorno de la máscara, presione Ctrl Intro para hacer una selección y rellénela con color. Nombra estas dos capas casco y máscara respectivamente: crea una nueva capa en blanco nuevamente y asígnale el nombre cuerpo. Utilice la herramienta Pluma para trazar el contorno de todo el cuerpo, presione Ctrl Intro para seleccionar y rellenar con color. Reduzca la opacidad de ambos para que sea más fácil ver las líneas: el resto del enfoque sigue siendo el mismo, sigo usando la herramienta de lápiz Ctrl Enter para seleccionar el color de relleno porque captura estas curvas y contornos muy suaves. Vale la pena señalar que debemos crear una nueva capa para cada sección y darle un nombre. Esto nos facilita la búsqueda: después de crear cada parte, restablezca la opacidad a 100 y vea el efecto: para manejar bien cada capa y separar claramente las capas, creamos un grupo para cada capa como se muestra en la imagen. Imagen: mantenga presionada la tecla Ctrl y haga clic en la miniatura de la capa de máscara, para poder comenzar a dibujar con confianza y no tener que preocuparme por dibujar en otras áreas. Elija un pincel flexible con la opacidad más baja posible. Presione la tecla D para restaurar los colores de fondo delantero y trasero en blanco y negro, y haga clic en la tecla X para cambiar entre los dos. Pinta con cuidado las sombras de negro y las luces de blanco. Puedes verlo creando lentamente un efecto tridimensional, enfatizando aún más los contornos claros y los bordes de las sombras. Mi experiencia es: cuando nos mezclamos, no estamos tirando y tirando sin habilidad. La cantidad de aplicación en dos áreas adyacentes afectará el efecto tridimensional general. A lo que todos deben prestar atención es que cuando aplico el efecto de luces o sombras, no lo aplico de manera uniforme. Debo considerar la cantidad de luces/sombras en diferentes partes según la dirección de la luz, como se muestra en la imagen. Imagen: Luego selecciono el grupo de cascos, y en Crear una nueva capa llamada Sombra dentro de él, y uso un pincel negro para pintar la parte de sombra de la máscara debajo. Tomémonos nuestro tiempo, como se muestra en la imagen: Crea una nueva capa. para los ojos y nómbralo. Todavía uso la herramienta Pluma para trazar el contorno y rellenarlo con marrón oscuro: ahora voy a continuar con la parte del casco, como antes, crearé una nueva capa en el grupo de cascos y le pondré el nombre Destacados, es mejor crear las Luces por separado de la capa Sombras. Cambia el color de primer plano a blanco, selecciona el Pincel Flexible, baja la Opacidad a alrededor de 9 y pinta con cuidado. Presta atención a la cantidad de pintura aplicada a cada parte, lo que afectará directamente al efecto tridimensional: crea una nueva capa en el grupo de cascos y llámala Líneas. Seleccione la herramienta Pluma y cambie el modo a "Forma". Desactiva el relleno y usa solo el trazo. Dibuje la línea como se muestra en la imagen: Ejecute Filtro-Desenfoque-Desenfoque gaussiano en la línea, como se muestra en la imagen: Reduzca adecuadamente la opacidad para lograr el efecto de línea ideal: porque la línea se genera por las diferentes cantidades de resaltado en el punto de inflexión de la cabeza Y producido, por lo que debemos seleccionar la capa de resaltado y fortalecer el resaltado en el lado derecho de la línea, como se muestra en la imagen: Seleccione la capa de sombra, ¡negra! Con un pincel suave, aplica la sombra debajo del cuello: en el borrador en línea, hay una costura oscura en el cuello que debemos tratar. Ocultemos la capa del cuerpo y creemos una nueva capa de cuello encima de la capa del cuerpo en el grupo de cuerpos. Utilice la herramienta Pluma para trazar la capa de costura y rellénela de negro: active la capa del cuerpo y reduzca la opacidad del cuello de forma adecuada: cree una capa resaltada con nombre para el cuello y utilice un pincel suave blanco con una opacidad de 9.