1. #include <stdio.h>
  2. #include <winsock.h>
  3. #include <string.h>
  4. #pragma comment(lib, "ws2_32.lib")
  5.  
  6. void geturl(char *url)
  7. {
  8. WSADATA WSAData={};
  9. SOCKET sockfd;
  10. struct sockaddr_in addr;
  11. struct hostent *pURL;
  12. char myurl[BUFSIZ];
  13. char *pHost = , *pGET = ;
  14. char host[BUFSIZ], GET[BUFSIZ];
  15. char header[BUFSIZ] = "";
  16. static char text[BUFSIZ];
  17. int i;
  18.  
  19. /*
  20. * windows下使用socket必须用WSAStartup初始化,否则不能调用
  21. */
  22. if(WSAStartup(MAKEWORD(,), &WSAData))
  23. {
  24. printf("WSA failed\n");
  25. return;
  26. }
  27.  
  28. /*
  29. * 分离url中的主机地址和相对路径
  30. */
  31. strcpy(myurl, url);
  32. for (pHost = myurl; *pHost != '/' && *pHost != '\0'; ++pHost);
  33. if ( (int)(pHost - myurl) == strlen(myurl) )
  34. strcpy(GET, "/");
  35. else
  36. strcpy(GET, pHost);
  37. *pHost = '\0';
  38. strcpy(host, myurl);
  39. printf("%s\n%s\n", host, GET);
  40.  
  41. /*
  42. * 设定socket参数,并未真正初始化
  43. */
  44. sockfd = socket(PF_INET, SOCK_STREAM, IPPROTO_TCP);
  45. pURL = gethostbyname(host);
  46. addr.sin_family = AF_INET;
  47. addr.sin_addr.s_addr = *((unsigned long*)pURL->h_addr);
  48. addr.sin_port = htons();
  49.  
  50. /*
  51. * 组织发送到web服务器的信息
  52. * 为何要发送下面的信息请参考HTTP协议的约定
  53. */
  54. strcat(header, "GET ");
  55. strcat(header, GET);
  56. strcat(header, " HTTP/1.1\r\n");
  57. strcat(header, "HOST: ");
  58. strcat(header, host);
  59. strcat(header, "\r\nConnection: Close\r\n\r\n");
  60.  
  61. /*
  62. * 连接到服务器,发送请求header,并接受反馈(即网页源代码)
  63. */
  64. connect(sockfd,(SOCKADDR *)&addr,sizeof(addr));
  65.  
  66. send(sockfd, header, strlen(header), );
  67.  
  68. while ( recv(sockfd, text, BUFSIZ, ) > )
  69. {
  70. printf("%s", text);
  71. strnset(text, '\0', BUFSIZ);
  72. }
  73.  
  74. closesocket(sockfd);
  75.  
  76. WSACleanup();
  77. }
  78.  
  79. int main()
  80. {
  81. char url[];
  82. printf("http://");
  83. scanf("%s", url);
  84. geturl(url);
  85. return ;
  86. }

利用C语言获得网页编码的更多相关文章

  1. asp.net 利用HttpWebRequest自动获取网页编码并获取网页源代码

    /// <summary> /// 获取源代码 /// </summary> /// <param name="url"></param& ...

  2. 转:从开源项目学习 C 语言基本的编码规则

    从开源项目学习 C 语言基本的编码规则 每个项目都有自己的风格指南:一组有关怎样为那个项目编码约定.一些经理选择基本的编码规则,另一些经理则更偏好非常高级的规则,对许多项目而言则没有特定的编码规则,项 ...

  3. 利用DIV+CSS制作网页过程中常用的基本概念及标签使

    CSS主要用于对HTML文件功能的补充及扩展,其作用就是对HTML文件中各种排版进行设置,达到对网页中字体.颜色.背景.图片等的控制,使网页能够完全依照设计者的想法来显示. CSS可以控制网页的显示, ...

  4. 利用Crowbar抓取网页异步加载的内容 [Python俱乐部]

    利用Crowbar抓取网页异步加载的内容 [Python俱乐部] 利用Crowbar抓取网页异步加载的内容 在做 Web 信息提取.数据挖掘的过程中,一个关键步骤就是网页源代码的获取.但是出于各种原因 ...

  5. 利用DIV+CSS制作网页过程中常用的基本概念及标签使用细节

    CSS主要用于对HTML文件功能的补充及扩展,其作用就是对HTML文件中各种排版进行设置,达到对网页中字体.颜色.背景.图片等的控制,使网页能够完全依照设计者的想法来显示. CSS可以控制网页的显示, ...

  6. 浏览器正确理解和使用GBK及UTF-8(UTF-8 + BOM)网页编码

    网页编码英文译为web page encoding.是在网页中指定其特定的字符编码格式的库. GBK是国家标准GB2312基础上扩容后兼容GB2312的标准. GBK的文字编码是用双字节来表示的.即不 ...

  7. 利用@media screen实现网页布局的自适应

    利用@media screen实现网页布局的自适应 优点:无需插件和手机主题,对移动设备友好,能够适应各种窗口大小.只需在CSS中添加@media screen属性,根据浏览器宽度判断并输出不同的长宽 ...

  8. Swift3.0语言教程使用编码创建和初始化字符串

    Swift3.0语言教程使用编码创建和初始化字符串 使用编码创建和初始化字符串 创建和初始化字符串除了可以使用上文中提到的方法外,还可以使用init(coder:)方法,此方法一般不常使用,其语法形式 ...

  9. ueditor的工具栏显示乱码解决方法 小问题.. 是你的页面编码与语言包js编码不符所导致的

    ueditor的工具栏显示乱码解决方法 小问题..  是你的页面编码与语言包js编码不符所导致的解决方法:用记事本将ueditor\..\lang\zh-cn\zh-cn.js打开,然后保存为ANSI ...

随机推荐

  1. 移动混合开发之HTML5在移动开发中的准则

    1.尽量单页面开发 2.慎重选择前端UI框架,新手最好自己动手. 3.动画特效达到60fps 4.长度单位是用rem,即字体的宽度,字体宽度可根据 window.width/number.

  2. CGBitmapContextCreate函数参数详解

    函数原型: CGContextRef CGBitmapContextCreate ( void *data, size_t width, size_t height, size_t bitsPerCo ...

  3. 利用Ajax+MSMQ(消息队列)+WebService实现服务器端向客户端的信息推送

    需求: 每当数据库有数据更新时,推送到客户端 软需求: 1.服务器资源有限,要求资源占用尽可能小: 2.项目可控,不许调用第三方不可信不稳定的方法. 已有事例: 1.58到家采用的方法是TCP的长连接 ...

  4. 连接WCF报EntityFramework.SqlServer 错误的解决方法

    现象: The Entity Framework provider type 'System.Data.Entity.SqlServer.SqlProviderServices, EntityFram ...

  5. [抓紧小长假的尾巴] 分析一个KeyFileMe

    系统 : Windows xp 程序 : keyfileme 程序下载地址 :http://pan.baidu.com/s/1qYVfvu0 要求 : 编写KeyFile 使用工具 : OD 可在看雪 ...

  6. W3C代码标准规范

    一.目的: 为什么要遵循标准我们作为生产者实际上只是位于中游,既不是上游的浏览器制造商,他们是标准的真正制定者,也不算是下游,他们是浏览器的终端使用者.这个角色就意味着我们位于一个接口的位置,我们需要 ...

  7. EasyUI 开发笔记(一)

    由于某些原因,在公司做的后台需要改成类似于Ext.js 形式的后台,主要看好其中的 框架布局,以及tab开页面和弹出式内部窗体. 后来看看,改成EasyUI,较Ext.js 库小很多,也便于公司的初级 ...

  8. Android studio快捷键大全 和 eclipse对照(原)

    Ctrl+空格                  代码提示                           (同Eclipse中Alt+/) Ctrl+Shjft+N             项目 ...

  9. ubuntu 非常简单的方式安装多个perl版本

    参考http://stackoverflow.com/questions/22934080/how-to-downgrade-to-perl-5-10-1 Perlbrew will allow yo ...

  10. ThinkPHP 3.2 获取页面运行时间

    在ThinkPHP中,可以通过在config.php中配置'SHOW_PAGE_TRACE' =>true,打开页面调试,实现页面载入时间的显示.但显示在页面右下角TP的LOGO显然不能适用于我 ...