Download as txt, pdf, or txt
Download as txt, pdf, or txt
You are on page 1of 2

Código en lenguaje C.

ALUMNO: PINEDA CRUZ BRANDON


GRUPO: 8CM12
PRACTICA 5: "Implementación de un protocolo basado en transacciones"

//SERVIDOR UDP

#include <stdio.h>
#include <stdlib.h>
#include <sys/socket.h>
#include <netinet/in.h>

int main() {
// Crea un socket UDP
int server_socket = socket(AF_INET, SOCK_DGRAM, 0);
if (server_socket < 0) {
perror("fallo la creacion del socket");
exit(1);
}

// Vincula el socket a un puerto específico


struct sockaddr_in server_address;
server_address.sin_family = AF_INET;
server_address.sin_port = htons(4322);
server_address.sin_addr.s_addr = INADDR_ANY;

if (bind(server_socket, (struct sockaddr*)&server_address,


sizeof(server_address)) < 0) {
perror("falló la vinculación del socket");
exit(1);
}

// Recibe un mensaje del cliente


char receive_buffer[100];
struct sockaddr_in client_address;
int client_address_len = sizeof(client_address);

int bytes_received = recvfrom(server_socket, receive_buffer,


sizeof(receive_buffer), 0, (struct sockaddr*)&client_address, &client_address_len);
if (bytes_received < 0) {
perror("fallo la recepción del mensaje del cliente");
exit(1);
}

// Enviar un mensaje al cliente


char send_buffer[100] = "Hola Practica 4!\n";
int bytes_sent = sendto(server_socket, send_buffer, sizeof(send_buffer), 0,
(struct sockaddr*)&client_address, client_address_len);
if (bytes_sent < 0) {
perror("fallo el envio de mensaje al cliente");
exit(1);
}

// cerrar el socket
close(server_socket);

return 0;
}
// CLIENTE UDP

#include <stdio.h>
#include <stdlib.h>
#include <sys/socket.h>
#include <netinet/in.h>

int main() {
// crea un socket UDP
int client_socket = socket(AF_INET, SOCK_DGRAM, 0);
if (client_socket < 0) {
perror("fallo la creacion del socket");
exit(1);
}

// conecta al servidor
struct sockaddr_in server_address;
server_address.sin_family = AF_INET;
server_address.sin_port = htons(4322);
server_address.sin_addr.s_addr = inet_addr("192.168.1.100");

if (connect(client_socket, (struct sockaddr*)&server_address,


sizeof(server_address)) < 0) {
perror("fallo conexion al servidor");
exit(1);
}

// envia mensaje al servidor


char send_buffer[100];
int bytes_sent = send(client_socket, send_buffer, sizeof(send_buffer), 0);
if (bytes_sent < 0) {
perror("fallo enviar mensaje al servidor");
exit(1);
}

// recibir un mensaje del servidor


char receive_buffer[100];
int bytes_received = recv(client_socket, receive_buffer, sizeof(receive_buffer),
0);
if (bytes_received < 0) {
perror("fallo la recepcion de mensaje del servidor");
exit(1);
}

// mostrar el mensaje recibido


printf("Received: %s\n", receive_buffer);

// cierra el socket
close(client_socket);

return 0;
}

You might also like