📄 test.cpp
字号:
/*#include <WinSock2.h>
#include <string.h>
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#pragma comment(lib,"ws2_32.lib")
int parse_ip_string(long proxyindex,char *proxyip,long proxyport,char *url, DWORD *lpServerIP, DWORD *lpServerPort, char *lpHost, char *suburl)
{
////202.97.149.167
// google's Ip address is http://72.14.207.99/
if(!url || !strlen(url)) return -1;
if(!lpServerIP || !lpHost || !lpServerPort || !suburl) return -1;
char lpURL[1024];
strcpy(lpURL,url);
DWORD dwServerPort, dwServerIP;
char *pTmp,*pTmp2,*pTmp3;
//printf("%s\n",lpURL);
if (strnicmp(lpURL,"http://",7))
return -1; //此处判断URL前缀是否为"http://",如果不是,则返回错误
printf("RUNNING here!\r\n");
pTmp=lpURL+7;
printf("pTemp = %s\n", pTmp);
while(*pTmp && *pTmp!='@' && *pTmp!='/') {
pTmp++;
//printf("%s\n", pTmp);
}
printf("%s\n", pTmp);
if (*pTmp==NULL) return -1;
if (*pTmp=='@') pTmp++;
else pTmp=lpURL+7;
pTmp2=pTmp;
while(*pTmp2 && *pTmp2!=':' && *pTmp2!='/'){
pTmp2++;
}
printf("%s\n", pTmp2);
if (*pTmp2==NULL){
printf("*pTemp2==NULL\n");
return -1;
}
char ch=*pTmp2;
*pTmp2=NULL;
strcpy(lpHost, pTmp);
printf("lpHost = %s\n", lpHost);
if(proxyindex>=0)
dwServerIP=inet_addr(proxyip);//hena,proxy,2008.02.28
else
dwServerIP=inet_addr(pTmp);
if (dwServerIP==INADDR_NONE)
{
struct hostent FAR * phost;
phost=gethostbyname(pTmp);
if (phost)
dwServerIP=(unsigned long)(*(unsigned long*)*phost->h_addr_list);
}
dwServerIP=htonl(dwServerIP);
*pTmp2=ch;
if (ch==':')
{
printf("I am here!\n");
printf("%s\n", pTmp2);
pTmp3=pTmp2+1;
printf("%s\n", pTmp3);
if (*pTmp3 =='/'){
dwServerPort = 80;
goto label;
}
while(*pTmp3 && *pTmp3!='/') pTmp3++;
if (*pTmp3==NULL) return -1;
*pTmp3=NULL;
dwServerPort=atoi(pTmp2+1);
printf("%d\n", atoi(pTmp2+1));
*pTmp3='/';
label:
pTmp2=pTmp3;
}
else dwServerPort=80;
printf("dwServerPort=%d", dwServerPort);
if(proxyindex>=0)
dwServerPort=proxyport;//hena,proxy,2008.02.28
*lpServerIP = dwServerIP;
*lpServerPort = dwServerPort;
strcpy(suburl, pTmp2);
printf("suburl == %s\n", pTmp2);
return 0;
}
/*int main() {
char *addr = "http://www.google.com:/index.html";
DWORD tmp_ip = 100;
DWORD tmp_port =80;
DWORD* server_ip, *server_port;
server_ip = & tmp_ip;
server_port =& tmp_port;
//*server_port = 1000;
//*server_ip = 100;
char * myhost = new char[1024];
char * suburl = new char[1024];
parse_ip_string(-1, "", 0, addr, server_ip, server_port, myhost, suburl);
//printf("%s\n",addr);
//printf("%d\n", server_ip);
//printf("%d\n", server_port);
//printf("%s\n", myhost);
//printf("%s\n", suburl);
char str[]="<";
int x;
sscanf(str,"%x",&x);
printf("%x",x);
return 0;
}
void flush(FILE *stream);
int main(void){
FILE *stream;
char *msg = "This is a test!";
strstr(msg,"is");
/* create a file */
//stream = fopen("DUMMY.bin", "wb");
/* write some data to the file */
//fwrite(msg, 4, 1, stream);
//system("cls");;
//printf("Press any key to flush DUMMY.FIL:");
//getch();
/* flush the data to DUMMY.FIL without closing it */
//flush(stream);
/*printf(msg);
printf("\nFile was flushed, Press any key to quit:");
getch();
unsigned short ch = 0x7c;
printf("%c\n",ch);
printf("%x\n", '|');
return 0;
}
void flush(FILE *stream){
int duphandle;
/* flush the stream's internal buffer */
//fflush(stream);
/* make a duplicate file handle */
//duphandle = dup(fileno(stream));
/* close the duplicate handle to flush the DOS buffer*/
//close(duphandle);
//}
#include <stdio.h>
#include <winsock2.h> /*winsock库头文件*/
#include <windows.h>
#pragma comment(lib,"WS2_32.lib") //连接winsock库文件
int main()
{
WSADATA stWsaData = {0};
SOCKET hSocket = 0;
sockaddr_in stRemoteAddr = {0};
char cSendData[4096] = {0}; //发送数据缓冲区
char cRecvData[102400] = {0}; //接收数据缓冲区
int nRetBytes = 0;
::WSAStartup(MAKEWORD(2,0),&stWsaData); //初始化winsock库
hSocket = ::socket(AF_INET,SOCK_STREAM,0); //创建TCP套接字
if(hSocket == INVALID_SOCKET)
return 0;
stRemoteAddr.sin_family = AF_INET; //填充sockaddr_in结构
//64.233.189.104为ping www.google.com得到的IP,暂时懒得写转换IP函数了
stRemoteAddr.sin_addr.S_un.S_addr = inet_addr("64.233.189.104");
stRemoteAddr.sin_port = htons(80);
if(::connect(hSocket,(sockaddr *)&stRemoteAddr,sizeof stRemoteAddr) == -1) //连接到服务器
{
::closesocket(hSocket); //关闭TCP套接字
::WSACleanup(); //释放winsock库
return 0;
}
//构造HTTP请求数据包的请求头
strcpy(cSendData,"POST /translate_t?langpair=en|zh-CN HTTP/1.1\r\n");
strcat(cSendData,"Accept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, application/x-shockwave-flash, application/vnd.ms-excel, application/vnd.ms-powerpoint, application/msword, application/x-silverlight, application/QVOD, */*\r\n");
strcat(cSendData,"Referer: http://www.google.cn/language_tools\r\n");
strcat(cSendData,"Accept-Language: zh-cn\r\n");
strcat(cSendData,"Content-Type: application/x-www-form-urlencoded\r\n");
//strcat(cSendData,"Accept-Encoding: gzip , deflate\r\n");
strcat(cSendData,"User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; InfoPath.1; .NET CLR 2.0.50727)\r\n");
strcat(cSendData,"Host: translate.google.com\r\n");
strcat(cSendData,"Content-Length: 46\r\n");
strcat(cSendData,"Connection: Keep-Alive\r\n");
strcat(cSendData,"cache-Control: no-cache\r\n");
//strcat(cSendData,"Cookie: __utmc=195145449; __utma=195145449.421253565.1205461371.1205592024.1205592348.11; __utmz=195145449.1205585337.9.8.utmccn=(referral)|utmcsr=hao123.com|utmcct=/ss/fy.htm|utmcmd=referral; __utmb=195145449\r\n");
//请求头与用户数据段之间的分隔行
strcat(cSendData,"\r\n");
//构造HTTP请求数据包的用户数据段
strcat(cSendData,"hl=zh-CN&ie=UTF-8&text=bad&langpair=en%7Czh-CN");
printf("HTTP协议请求头包格式: %s",cSendData);
::send(hSocket,cSendData,sizeof cSendData,0); //发送
nRetBytes = ::recv(hSocket,cRecvData,sizeof cRecvData,0);
printf(" 总共收到了%d数据!",nRetBytes);
//保存网页到文件(注意:返回的数据中包含HTTP响应头,而HTTP网页文件是不应该有这个的,应该去掉,这里我省略了)
FILE * fp = fopen("翻译结果网页.html","wb");
fwrite(cRecvData,nRetBytes,1,fp);
fclose(fp);
::closesocket(hSocket); //关闭TCP套接字
::WSACleanup(); //释放winsock库
return 0;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -