#include <stdio.h>
#include <winsock2.h>
#include <windows.h>#pragma comment(lib,"WS2_32.lib")int main()
{
WSADATA stWsaData;
::WSAStartup(MAKEWORD(2,0),&stWsaData);
SOCKET hSocket = ::socket(AF_INET,SOCK_STREAM,0);
if(hSocket == INVALID_SOCKET)
return 0; sockaddr_in stRemoteAddr;
stRemoteAddr.sin_family = AF_INET;
stRemoteAddr.sin_addr.S_un.S_addr = inet_addr("64.233.189.104");
//64.233.189.104为ping www.google.com得到的IP,暂时懒得写转换IP函数了
stRemoteAddr.sin_port = htons(80);
if(::connect(hSocket,(sockaddr *)&stRemoteAddr,sizeof stRemoteAddr) == -1)
return 0; char cPostData[10000] = {0};
strcpy(cPostData,"POST /translate_t?langpair=en|zh-CN HTTP/1.1\r\n");
strcat(cPostData,"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(cPostData,"Referer: http://www.google.cn/language_tools\r\n");
strcat(cPostData,"Accept-Language: zh-cn\r\n");
strcat(cPostData,"Content-Type: application/x-www-form-urlencoded\r\n");
strcat(cPostData,"Accept-Encoding: gzip , deflate\r\n");
strcat(cPostData,"User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; InfoPath.1; .NET CLR 2.0.50727)\r\n");
strcat(cPostData,"Host: translate.google.com\r\n");
strcat(cPostData,"Content-Length: 46\r\n");
strcat(cPostData,"Connection: Keep-Alive\r\n");
strcat(cPostData,"cache-Control: no-cache\r\n");
strcat(cPostData,"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\r\n");
strcat(cPostData,"hl=zh-CN&ie=UTF-8&text=bad&langpair=en%7Czh-CN");
printf(cPostData); ::send(hSocket,cPostData,sizeof cPostData,0);
unsigned char cRecvData[10000] = {0};
FILE * fp = fopen("C:\D.htm","wb");
int nRet = ::recv(hSocket,(char *)cRecvData,sizeof cRecvData,0);
printf("收到了%d数据!",nRet);
fwrite(cDRecvData,nRet,1,fp);
fclose(fp);
if(hSocket)
::closesocket(hSocket);
::WSACleanup();
return 0;
}听说GOOGLE网站使用的是UTF-8编码,感觉跟这个有关系。查找了一天关于UTF-8的资料,没有头发,就跑来这里寻找高手了。高手帮帮忙啊!!!!!!!!!
#include <winsock2.h>
#include <windows.h>#pragma comment(lib,"WS2_32.lib")int main()
{
WSADATA stWsaData;
::WSAStartup(MAKEWORD(2,0),&stWsaData);
SOCKET hSocket = ::socket(AF_INET,SOCK_STREAM,0);
if(hSocket == INVALID_SOCKET)
return 0; sockaddr_in stRemoteAddr;
stRemoteAddr.sin_family = AF_INET;
stRemoteAddr.sin_addr.S_un.S_addr = inet_addr("64.233.189.104");
//64.233.189.104为ping www.google.com得到的IP,暂时懒得写转换IP函数了
stRemoteAddr.sin_port = htons(80);
if(::connect(hSocket,(sockaddr *)&stRemoteAddr,sizeof stRemoteAddr) == -1)
return 0; char cPostData[10000] = {0};
strcpy(cPostData,"POST /translate_t?langpair=en|zh-CN HTTP/1.1\r\n");
strcat(cPostData,"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(cPostData,"Referer: http://www.google.cn/language_tools\r\n");
strcat(cPostData,"Accept-Language: zh-cn\r\n");
strcat(cPostData,"Content-Type: application/x-www-form-urlencoded\r\n");
strcat(cPostData,"Accept-Encoding: gzip , deflate\r\n");
strcat(cPostData,"User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; InfoPath.1; .NET CLR 2.0.50727)\r\n");
strcat(cPostData,"Host: translate.google.com\r\n");
strcat(cPostData,"Content-Length: 46\r\n");
strcat(cPostData,"Connection: Keep-Alive\r\n");
strcat(cPostData,"cache-Control: no-cache\r\n");
strcat(cPostData,"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\r\n");
strcat(cPostData,"hl=zh-CN&ie=UTF-8&text=bad&langpair=en%7Czh-CN");
printf(cPostData); ::send(hSocket,cPostData,sizeof cPostData,0);
unsigned char cRecvData[10000] = {0};
FILE * fp = fopen("C:\D.htm","wb");
int nRet = ::recv(hSocket,(char *)cRecvData,sizeof cRecvData,0);
printf("收到了%d数据!",nRet);
fwrite(cDRecvData,nRet,1,fp);
fclose(fp);
if(hSocket)
::closesocket(hSocket);
::WSACleanup();
return 0;
}听说GOOGLE网站使用的是UTF-8编码,感觉跟这个有关系。查找了一天关于UTF-8的资料,没有头发,就跑来这里寻找高手了。高手帮帮忙啊!!!!!!!!!
解决方案 »
- 经过修正,还请帮我看看,bind一直出错
- 如何快速查找文件并快速删除
- 使用postthreadmessage和PeekMessage进行线程通讯,高手请进
- 再问hook的问题。100分
- 说一下你对《 深入浅出MFC 》2e 的看法
- 怎么在win32 application里用mfc的类库,比如要用CDialog,这些类?
- 打印问题。WIN2k下可以打印,可是在win98下无法打印。
- 以前看过有关消息的知识,但没有真正发过消息,谁能告诉我怎么发送消息呢?
- 如何把CString类型转换为const char*类型?在线等待!
- 急求:如何求取图像的梯度矢量场(梯度向量场)?????
- 向记事本中输入特殊字符
- [在线等]如何获取桌面hwnd 或者cwnd*?
C:\D.htm应改为C:\\D.htm
socket post我没搞过,你可以参考下这贴,用CHttpConnection的,我前段时间弄了个类似的,不过有时候google会要求输入验证码,不会成功http://topic.csdn.net/u/20080214/20/0c9541e3-fd1a-488f-9bcd-c3d05fbb51dd.html
传回来的数据经过压缩的,正常。
如果你不要自己解压,就把这行去掉
至于你说的UTF-8编码,可以用抓包工具抓取下来看,里面格式包里都有的
去掉这句
搞定了,原来真有压缩。不过原来的代码里的格式也有点问题。多了几个空格,可能是在抓包后处理过程中多出来的。害得我调试不出来。呵呵~~现把可以成功的代码贴出来:
#include <stdio.h>
#include <winsock2.h>
#include <windows.h> #pragma comment(lib,"WS2_32.lib") int main()
{
WSADATA stWsaData;
::WSAStartup(MAKEWORD(2,0),&stWsaData);
SOCKET hSocket = ::socket(AF_INET,SOCK_STREAM,0);
if(hSocket == INVALID_SOCKET)
return 0; sockaddr_in stRemoteAddr;
stRemoteAddr.sin_family = AF_INET;
stRemoteAddr.sin_addr.S_un.S_addr = inet_addr("64.233.189.104");
//64.233.189.104为ping www.google.com得到的IP,暂时懒得写转换IP函数了
stRemoteAddr.sin_port = htons(80);
if(::connect(hSocket,(sockaddr *)&stRemoteAddr,sizeof stRemoteAddr) == -1)
return 0; char cPostData[10000] = {0};
strcpy(cPostData,"POST /translate_t?langpair=en|zh-CN HTTP/1.1\r\n");
strcat(cPostData,"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(cPostData,"Referer: http://www.google.cn/language_tools\r\n");
strcat(cPostData,"Accept-Language: zh-cn\r\n");
strcat(cPostData,"Content-Type: application/x-www-form-urlencoded\r\n");
//strcat(cPostData,"Accept-Encoding: gzip , deflate\r\n");
strcat(cPostData,"User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; InfoPath.1; .NET CLR 2.0.50727)\r\n");
strcat(cPostData,"Host: translate.google.com\r\n");
strcat(cPostData,"Content-Length: 46\r\n");
strcat(cPostData,"Connection: Keep-Alive\r\n");
strcat(cPostData,"cache-Control: no-cache\r\n");
strcat(cPostData,"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\r\n");
strcat(cPostData,"hl=zh-CN&ie=UTF-8&text=bad&langpair=en%7Czh-CN\r\n"); printf(cPostData); ::send(hSocket,cPostData,sizeof cPostData,0);
unsigned char cRecvData[10000] = {0};
FILE * fp = fopen("C:\\D.htm","wb");
int nRet = ::recv(hSocket,(char *)cRecvData,sizeof cRecvData,0);
printf("收到了%d数据!",nRet);
fwrite(cRecvData,nRet,1,fp);
fclose(fp);
if(hSocket)
::closesocket(hSocket);
::WSACleanup();
return 0;
}