60 lines
1.5 KiB
C
60 lines
1.5 KiB
C
#include <sys/socket.h>
|
|
#include <netinet/in.h>
|
|
#include <string.h>
|
|
#include <arpa/inet.h>
|
|
#include <stdio.h>
|
|
#include <stdlib.h>
|
|
#include <unistd.h>
|
|
|
|
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), MSG_OOB, (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;
|
|
} |