Writing Monitors for the Event Monitoring Service (December 1999)
Chapter 5 147
Writing a Target Application
Target Application Overview
if (listen(sock, 20) == -1) {
perror("Error in listen()");
exit(1);
}
memset(&clientaddr_in, 0, sizeof(struct sockaddr_in));
clientaddr_in.sin_family = AF_INET;
clientaddr_in.sin_port = tcpport;
while (1) {
addrlen = sizeof(struct sockaddr_in);
datasock = accept(sock, &clientaddr_in, &addrlen);
if (datasock == -1) {
perror("Error in accept()");
exit(1);
}
/*************************************************************************/
/* Read message header from the socket to get object length */
/*************************************************************************/
msglen = recvfrom (datasock, header, HEADER_LEN, MSG_PEEK,
&clientaddr_in, &addrlen);
if (msglen != HEADER_LEN) {
printf("Error: received %d bytes, expected %d bytes.\n",
msglen, HEADER_LEN);
perror("Error in recvfrom()");
exit(1);
}
objlen = atoi(header);
buf = (char *)malloc(HEADER_LEN+objlen+1);
if (!buf) {
perror("Error in malloc()");
exit(1);
}