日期:2014-05-16  浏览次数:20641 次

通过c程序来判断一个端口是否连通。
通过c程序来判断一个端口是否连通。

要求是这样的。有服务器上有一个进程总是死,为了判断它是否还在工作,用C写一个程序不断telnet这个端口,如果没有响应,则先停后起。但是目前存在问题,不知道c里面有什么函数能判断某ip下某端口是否有相应,请高人指点

------解决方案--------------------
#include <stdlib.h>
#include <stdio.h>
#include <unistd.h>
#include <fcntl.h>
#include <sys/types.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <errno.h>
#include <time.h>
#include <arpa/inet.h>

int main(int argc, char *argv[])
{
int fd, retval;
struct sockaddr_in addr;
struct timeval timeo = {3, 0};
char buf[1024];
int i;
socklen_t len;
fd_set set;

fd = socket(AF_INET, SOCK_STREAM, 0);
addr.sin_family = AF_INET;
addr.sin_addr.s_addr = inet_addr(argv[1]);
addr.sin_port = htons(atoi(argv[2]));
if ((i=connect(fd, (struct sockaddr*)&addr, sizeof(addr))) == 0)
{
close(fd);
perror("connected success:");
return 0;
}
perror("connected error:");
close(fd);
return 0;
}