/* simple talk program (UDP version) - client */
#include <stdio.h>
#include <fcntl.h>
#include <signal.h>
#include <sys/types.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <arpa/inet.h>
#define SERV_UDP_PORT 6000
#define SERV_HOST_ADDR "128.197.11.14"
#define CLI_UDP_PORT 6000
#define CLI_HOST_ADDR "128.197.11.17"
#define MAXLINE 512
int sockfd;
int main(void)
{
int n;
struct sockaddr_in cli_addr, serv_addr;
char sendline[MAXLINE];
void sigio_handler(int);
if ((sockfd = socket(AF_INET,SOCK_DGRAM,0)) < 0)
err_sys("socket");
if (fcntl(sockfd, F_SETOWN, getpid()) == -1)
err_sys("fcntl");
if (fcntl(sockfd, F_SETFL, FASYNC) == -1)
err_sys("fcntl");
if (signal(SIGIO, sigio_handler) == SIG_ERR)
err_sys("signal");
bzero((char *) &cli_addr, sizeof(cli_addr));
cli_addr.sin_family = AF_INET;
cli_addr.sin_addr.s_addr = inet_addr(CLI_HOST_ADDR);
cli_addr.sin_port = htons(CLI_UDP_PORT);
if (bind(sockfd, (struct sockaddr *) &cli_addr, sizeof(cli_addr))
< 0)
err_sys("bind");
bzero((char *) &serv_addr, sizeof(serv_addr));
serv_addr.sin_family = AF_INET;
serv_addr.sin_addr.s_addr = inet_addr(SERV_HOST_ADDR);;
serv_addr.sin_port = htons(SERV_UDP_PORT);;
while (fgets(sendline, MAXLINE, stdin) != NULL) {
n = strlen(sendline);
if (sendto(sockfd, sendline, n, 0, (struct sockaddr *)
&serv_addr, sizeof(serv_addr)) != n)
err_sys("sendto");
}
exit(0);
}