配合http服务器(http://blog.youkuaiyun.com/hit_fantasy/article/details/17961539)使用的monitor命令专用客户端:
#include "unp.h"
int myreadline(int fd, char *buf, int n);
void monitor_cli(FILE *fp, int sockfd);
int main(int argc, char **argv)
{
int sockfd;
struct sockaddr_in servaddr;
if (argc != 3)
err_quit("usage: monitor <IPaddress> <port>");
sockfd = Socket(AF_INET, SOCK_STREAM, 0);
bzero(&servaddr, sizeof(servaddr));
servaddr.sin_family = AF_INET;
servaddr.sin_port = htons(atoi(argv[2]));
Inet_pton(AF_INET, argv[1], &servaddr.sin_addr);
Connect(sockfd, (SA *) &servaddr, sizeof(servaddr));
monitor_cli(stdin, sockfd); /* do it all */
exit(0);
}
void monitor_cli(FILE *fp, int sockfd)
{
char sendline[MAXLINE], receiveline[MAXLINE];
ssize_t n;
sprintf(sendline,"monitor\r\n\r\n");
Writen(sockfd, sendline, strlen(sendline));
while((n=myreadline(sockfd,receiveline,MAXLINE))>2)
{
printf("%s",receiveline);
fflush(stdout);
}
}
int myreadline(int fd, char *buf, int n)
{
char ch;
char *base=buf;
while(1)
{
if(read(fd, &ch, 1)!=1)
{
if(errno==EINTR) continue;
return -1;
}
if((*(buf++)=ch)=='\n') break;
}
*buf='\0';
return buf-base;
}