Red de conocimiento informático - Conocimientos de programación - Dgrama de programación

Dgrama de programación

Por cierto, su dirección no es fácil de usar, así que la cambié a 127.0.0.1, pero el puerto está bien. Escrito cumpliendo plenamente con los requisitos, compilado correctamente, depuración aprobada:

gcc server.c -o server

gcc client

Abrir. 2 consolas: una está funcionando. /server mientras el otro se está ejecutando. /cliente.

servidor.c:

================================= ========

# incluir & ltstdio.h & gt

# incluir & ltstdlib.h & gt

# incluir & ltstring. h & gt

# incluir & ltsys/types . h & gt;

# incluir & ltsys/socket .

# incluir & ltarpa. /inet h & gt;

# incluir & número de error& gt

#Definir tamaño de búfer 1024

typedef struct sockaddr SA

int main(void)

{

char buf[tamaño del búfer];

Estructura sockaddr _ en addr_s

Estructura en addr_c sockaddr _ en

int sockfd

socklen_t longitud;

int I;

if((sockfd = socket (AF_INET, SOCK_DGRAM, 0 )) == -1)

{

error("Error en el socket");

return-1;

}

memset(& addr_s, 0, tamaño de(addr_s)).

addr _ s.sin _ family = AF _ INET

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

addr_s.sin_port = htons(31180);

if(bind(sockfd,(SA *)&addr_s,sizeof(addr_s)) = = -1)

{

perror("Error al vincular");

return-1;

}

longitud = tamaño de (addr_c);

memset(buf,' \0 ', tamaño de (buf));

if(recvfrom(sockfd,buf, tamaño de (buf), 0

, (SA *)& addr_c & length)== -1)

{

error (" recvfrom fail "); }

printf("recvfrom client:%s\n ",buf);

sendto(sockfd,buf, sizeof(buf), 0, (SA *) & addr_c, sizeof(addr_c));

Cerrar(sockfd);

}

================= ===================

Cliente c:

============= =======================

# incluir & ltstdio.h & gt

# incluir & ltstdlib. h & gt

# incluir & ltstring.h & gt

# incluir & ltsys/types . h & gt;

# incluir & ltarpa/inet . h & gt;

# incluir & ltNúmero de error& gt

#Definir tamaño de búfer 1024

typedef struct sockaddr SA

int main(void)

{

int sockfd

char buf[tamaño del búfer] ;

Estructura en addr_s sockaddr _ in

if((sockfd = socket (AF_INET, SOCK_DGRAM, 0)) == -1)

{

perror("Error en el socket");

return-1;

}

memset(& addr_s, 0, sizeof(addr_s) ).

addr _ s.sin _ family = AF _ INET

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

addr_s.sin_port = htons(31180);

memset(buf,'\0',sizeof(buf));

sprintf(buf , "abcde");

if(sendto(sockfd,buf,sizeof(buf))

, 0, (SA *)& addr_s, sizeof( addr _ s)) <0)

{

error(" enviar a error ");

}

memset (buf, ' \0 ', tamaño de(buf));

recvfrom(sockfd, buf, tamaño de(buf), 0, NULL, NULL

printf("recvdel servidor:%s\n); ",buf);

Cerrar(sockfd);

}