这是我在早期 C++ 经验和学习过程中编写的一些代码。已经进行了大约三周(我想)。这个小程序将获取指定主机(在命令行中)的 IP 地址,并将时间戳、主机名和 IP 地址记录到 ipaddr.log 文件中。
未经广泛测试;简陋的代码。欢迎改进。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42
|
#include <iostream>
#include <netdb.h>
#include <sys/param.h>
#include <netinet/in.h>
#include <arpa/inet.h>
#include <fstream>
#include <time.h>
using namespace std;
#define MST (-7)
int main(int argc, char *argv[])
{
if(argc != 2)
{
printf("usage: %s <hostname>\n", argv[0], argv[1]);
exit(1);
}
hostent * record = gethostbyname(argv[1]);
if(record == NULL)
{
printf("%s is unavailable\n", argv[1]);
exit(1);
}
in_addr * address = (in_addr * )record->h_addr;
string ip_address = inet_ntoa(* address);
// get the current time
time_t rawtime;
tm * ptm;
time ( &rawtime );
ptm = gmtime ( &rawtime );
cout << argv[1] << " (" << ip_address << ")\n";
// log this information to ipaddr.log
ofstream ipaddr_log("ipaddr.log", ios::app);
ipaddr_log << (ptm->tm_hour+MST%24) << ":" << (ptm->tm_min) << " " << argv[1] << " (" << ip_address << ")" << endl;
ipaddr_log.close();
return 0;
}
|