#include #include #include #include #include #include #include typedef struct sockaddr_in SockAddr_in; typedef struct sockaddr SockAddr; void handle_error(char *txt) { perror(txt); exit(-1); } int main() { int socket_fd; if ((socket_fd = socket(PF_INET, SOCK_DGRAM, 0)) == -1) handle_error("socket"); SockAddr_in caddr; SockAddr_in saddr; socklen_t addr_size = sizeof(SockAddr_in); memset(&saddr, 0, addr_size); saddr.sin_port = htons(4040); saddr.sin_family = PF_INET; inet_pton(PF_INET, "127.0.0.1", &(saddr.sin_addr.s_addr)); memset(&caddr, 0, addr_size); caddr.sin_port = htons(4041); caddr.sin_family = PF_INET; caddr.sin_addr.s_addr = INADDR_ANY; inet_pton(PF_INET, "127.0.0.1", &(caddr.sin_addr.s_addr)); if (bind(socket_fd, (SockAddr *)&caddr, addr_size) == -1) handle_error("bind"); double dd = 21.21; if (sendto(socket_fd, &dd, sizeof(double), 0, (SockAddr *)&saddr, addr_size) == -1) handle_error("sendto"); printf("sent: %f\n", dd); dd = 111.1; if (sendto(socket_fd, &dd, sizeof(double), 0, (SockAddr *)&saddr, addr_size) == -1) handle_error("sendto"); printf("sent: %f\n", dd); dd = 321.1; if (sendto(socket_fd, &dd, sizeof(double), 0, (SockAddr *)&saddr, addr_size) == -1) handle_error("sendto"); printf("sent: %f\n", dd); if (close(socket_fd) == -1) handle_error("close"); return 0; }