Writing Monitors for the Event Monitoring Service (December 1999)
146 Chapter5
Writing a Target Application
Target Application Overview
main(int argc, char **argv)
{
int addrlen, tcpport, optval;
int msglen, objlen, sock, datasock;
struct sockaddr_in saddr, clientaddr_in;
char *buf, *buf_offset;
char header[HEADER_LEN];
char errbuf[200];
struct hostent *hp;
time_t timer;
rm_object_addr obj;
rm_object_type object_type;
rm_error_type error_code;
if (argc < 2) {
fprintf(stderr, "Usage: %s <port>\n", argv[0]);
exit(1);
}
/*************************************************************************/
/* Open the listen socket */
/*************************************************************************/
if ((sock = socket(AF_INET, SOCK_STREAM, 0)) == -1) {
perror("Error in socket()");
exit(1);
}
tcpport = atoi(argv[1]);
printf("Using TCP port %d\n", tcpport);
saddr.sin_family = AF_INET;
saddr.sin_port = tcpport;
saddr.sin_addr.s_addr = INADDR_ANY;
optval = 1;
setsockopt(sock, SOL_SOCKET, SO_REUSEADDR, &optval, sizeof(optval));
if (bind(sock, &saddr, sizeof(struct sockaddr_in)) == -1) {
perror("Error in bind()");
exit(1);
}