📄 main.cpp
字号:
/*
*
* e-mail: enstart@gmail.com
* qq: 597807536
* CopyRight (c) 2009 NiChunRong
*
*/
#pragma comment(lib, "WS2_32.lib")
#include <winsock2.h>
#include <stdio.h>
#include "buffer.h"
#define DEFAULT_PORT 80
#define DEFAULT_SERVER "219.153.15.76"
extern void send_msg(char *ip, SOCKET s);
inline int get_next(char *src, char **p, char *search)
{
char *t;
(*p) = strstr(src, search);
if((*p) == NULL)
return -1;
(*p) += 12;
t = strchr((*p), '<');
if(t == NULL)
return -1;
*t = '\0';
printf("%s%s\n", search, (*p));
(*p) = t + 1;
return 0;
}
/*
* this function is written by LiuJiaLin
*/
inline int test_ip(char *ip)
{
int count = 0, number = 0;
int position = 0, flag = 0;
int num = 0;
while((*ip) != '\0')
{
if((*ip) <= '9' && (*ip) >= '0')
{
if(++num > 3)
return -1;
if(flag == 0)
{
position++;
flag++;
}
number = number * 10 + (*ip) - '0';
ip++;
}
else
{
if((*ip) == '.' && count <= 2 && number <= 255
&& position == count + 1)
{
number = 0;
flag = 0;
count++;
ip++;
num = 0;
}
else
return -1;
}
}
if(count != 3 || position != 4)
return -1;
else
return 0;
}
int main(int argc, char *argv[])
{
char *ip, *p;
char html[8];
char ip_buf[18];
int len = 0;
char buf[4096];
buffer *recv_buf;
SOCKET sock;
WSADATA wsaData;
struct sockaddr_in sa;
if(argc == 1)
{
printf("input ip adress: ");
scanf_s("%s", ip_buf, 18);
ip = ip_buf;
}
else if(argc > 2)
{
printf("Usage:> ip\n");
return -1;
}
else
ip = argv[1];
if(test_ip(ip) < 0)
{
printf("ip adress format error!");
return -1;
}
if(WSAStartup(MAKEWORD(2, 2), &wsaData) != 0)
return -1;
if(LOBYTE(wsaData.wVersion ) != 2 ||
HIBYTE(wsaData.wVersion ) != 2 )
{
WSACleanup();
return -1;
}
sock = socket(AF_INET, SOCK_STREAM, 0);
if(sock == INVALID_SOCKET)
return -1;
sa.sin_family = AF_INET;
sa.sin_addr.S_un.S_addr = inet_addr(DEFAULT_SERVER);
sa.sin_port = htons(DEFAULT_PORT);
if(connect(sock, (struct sockaddr *)&sa, sizeof(sa)) < 0)
return -1;
send_msg(ip, sock);
recv_buf = buffer_init();
recv(sock, buf, 4096, 0);//this is not good if the website changes
while((len = recv(sock, buf, 4096, 0)) > 0)
{
buffer_copysl(recv_buf, buf, len);
//this is not good if the website changes
if(recv_buf->length < 7)
continue;
p = recv_buf->ptr + recv_buf->length - 7;
if((*p) == '<')
{
memcpy(html, p, 7);
html[7] = '\0';
if(strcmp(html, "</html>") == 0)
break;
}
/*****************************************************/
}
buffer_copyend(recv_buf);
p = recv_buf->ptr;
if(get_next(p, &p, "本站主数据:") < 0)
{
printf("无本站主数据\n");
return -1;
}
if(get_next(p, &p, "参考数据一:") < 0)
{
printf("无参考数据一\n");
return -1;
}
if(get_next(p, &p, "参考数据二:") < 0)
{
printf("无参考数据二\n");
return -1;
}
buffer_free(recv_buf);
closesocket(sock);
WSACleanup();
return 0;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -