Red de conocimiento informático - Problemas con los teléfonos móviles - Programación de dispositivos de salida

Programación de dispositivos de salida

Pasos para la creación de comunicación de socket:

(1) Cree un socket a través de la función socket().

(2) Vincule el socket a la dirección del dispositivo a través de la función de vinculación.

(3)leer/recv/recvfromwrite/enviar/enviar a.

(4) El método close cierra el socket.

Los ejemplos son los siguientes:

test1.c

#Contiene? & ltstdio.h & gt

¿#Contiene? & ltstdlib.h & gt

#¿Incluir? & ltunistd.h & gt

#¿Incluir? & ltnetinet/in . h & gt;

#¿Contiene? <arpa/inet .h >

int? Principal (no válido)

{

//¿Crear? toma (de alimentación)

int? ¿fd? =?socket(AF_INET,?SOCK_DGRAM,?0);

if(fd==-1)

{

error(" socket \ n "

Salir (-1);

}

printf("socket? fd=%d\n ", FD);

}

p>

//¿Construir? ¿conectar? Dirección

estructura? sockaddr_in? addr

addr.sin_familia? =?AF_INET

addr.sin_port? =?htons(6666);

addr.sin_addr.s_addr? =?inet _ addr(" 127 . 0 . 0 . 1 ");

int? r;

r? =?bind(fd, (struct? sockaddr *)& addr, sizeof(addr));

if(r==-1)

{

error(" enlazar ");

Cerrar (FD);

Salir (-1);

}

printf( "¿vincular? ¿Dirección? ¡Éxito!\n ");

//¿Aceptar? ¿aún? ¿enviar? Noticias

Ciel? buf[255];

estructura? sockaddr_in? de;

socklen_t? len

Len.

=?tamañode(de);

mientras(1)

{

r? =?recvfrom(fd,buf,sizeof(buf)-1,0,(struct?sockaddr *)&from& amplen);

if(r>0)

{

buf[r]= 0;

printf("¿El? Mensaje? ¿De dónde? %s? es:%s\n ", inet_ntoa(de. sin_addr), buf );

}

Otro

{

Descanso;

}

}

//¿Cerrar? Toma (de alimentación)

Cerrar (FD);

¿Volver? 0;

}test2.c

#¿Contiene? & ltstdio.h & gt

¿#Contiene? & ltstdlib.h & gt

#¿Incluir? & ltunistd.h & gt

#¿Incluir? & ltstring.h & gt

#¿Contiene? <sys/socket.h>

¿#Contiene? & ltnetinet/in . h & gt;

#¿Contiene? <arpa/inet .h >

int? Principal (no válido)

{

//¿Crear? toma (de alimentación)

int? ¿fd? =?socket(AF_INET, SOCK_DGRAM, 0);

if(fd==-1)

{

perror("socket"); p>

Salir(-1);

}

printf("¿Crear? ¿Socket? ¡OK!\n ");

/ / ¿crear? ¿instalar? ¿enviar? Dirección

estructura? sockaddr_in? addr = { };

addr.sin_familia? =?AF_INET

addr.sin_port? =?htons(6666);

addr . sin _ addr s _ addr = inet _ addr(" 127 . 0 . 0 . 1 ");

//Enviar? ¿eso? ¿mensaje? ¿A dónde ir? ¿eso? ¿Especificar? Dirección

int? r;

¿Carácter? buf[255];

mientras(1)

{

r? =?read(0,buf,sizeof(buf)-1);

if(r & lt;=0)

romper;

sendto( fd,buf,r,0,(struct?sockaddr *)& addr,sizeof(addr));

}

//¿Cerrar? Toma (de alimentación)

Cerrar (FD);

¿Volver? 0;

}Primero ejecute test1.c, luego test2.c, ingrese el contenido después de ejecutar test2.c y la información se mostrará en la terminal donde se encuentra test1.c.

Los resultados de la ejecución son los siguientes: