使用Socket API如何与WEB服务器通信

原创 2005年05月29日 08:48:00

今天看到了有一些人在讨论如何使用Socket API与WEB服务器进行通信.

其实这个问题只要将请求网页HTTP内容明白就好解决.

请求HTTP头内容如下:

GET 你的网址 HTTP/1.1  

Accept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, application/vnd.ms-powerpoint, application/vnd.ms-excel, application/msword, application/x-shockwave-flash, */*  //要求返回的内容,如需要返回图片或Flash等,我通常都是让服务器仅返回text/html,主要是加快速度.

Accept-Language: zh-cn   //使用的语言

User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0; MyIE2) //这里主要是告诉服务器你的IE版号,所使用的系统及使用的浏览器,其实如果你想隐藏这里的内容,可以自行修改.

Host: www.paymesurf.com //服务器地址

Proxy-Connection: Keep-Alive 

上面基本上是HTTP的内容,在使用过程中大家需要注意以下几点:

1 发送请求的内容时,一定要再多加一个+#13#10

    Httpstr:='GET http://www.paymesurf.com:80/surf3.php?usrid=607 HTTP/1.1'+#13#10;
    httpstr:=httpstr+'Accept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, application/vnd.ms-powerpoint, application/vnd.ms-excel, application/msword, application/x-shockwave-flash, */*'+#13#10;
    httpstr:=httpstr+'Accept-Language: zh-cn'+#13#10;
    httpstr:=httpstr+'User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0; MyIE2; .NET CLR 1.1.4322)'+#13#10;
    httpstr:=httpstr+'Host: www.paymesurf.com'+#13#10;
    httpstr:=httpstr+'Proxy-Connection: Keep-Alive'+#13#10;

上面是一个网友的请求内容,而这个无法返回网页内容,主要问题就是没有告诉服务器哪里是结束位置.需要在最后面的位置再加入一个+#13#10,这样服务器 就会知道这里是结束了.

2 如何知道网页请求完毕,主要是通过FD_CLOSE来判断,当网页全部返回时,服务器会自动关闭这个请求,所以你只要知道当前请求关闭就说明网页已经下载完毕.

3 下面是我个人的经验了,如果你想写与WEB通信的软件,最好不要直接使用Socket与服务器通信,先将自己的IE设置成代理的模式,先看一看IE是如何通过代理软件(这个软件你最好自己写一个,可以显示请求的内容的.)工作的.然后你再使用你的软件与服务器通信这样你就知道你通常出错在哪里了.

以上是我这段时间研究的内容.希望大家多拍砖.

socket 请求Web服务器过程

HTTP协议只是一个应用层协议,它底层是通过TCP进行传输数据的。因此,浏览器访问Web服务器的过程必须先有“连接建立”的发生。 而有人或许会问:众所周知,HTTP协议有两大特性,一个是“无连接”性,...
  • zqixiao_09
  • zqixiao_09
  • 2016年01月24日 21:41
  • 1466

WEB页面通过Socket和服务器通讯(上)

最近空闲,整理一下上一个项目的部分资料。由于需要web页面和服务器进行通讯,以前研究过Comet,听说过有那么几种方法可以实现服务器推。也没实际作过测试。通过上次的项目也正好有个机会来研究下,测试研究...
  • xiage
  • xiage
  • 2009年09月07日 19:57
  • 3289

web请求和socket通信

详谈socket请求Web服务器过程 最开始我们需要明白一件事情,因为这是这篇文章的前提: HTTP协议只是一个应用层协议,它底层是通过TCP进行传输数据的...
  • liu_qiqi
  • liu_qiqi
  • 2015年05月16日 10:15
  • 4306

android 客户端与web服务器端通信

最近要做一个项目,所以进行了一个小测试.在网上看到的很多Demo,全部是在onCreate()方法中进行连接以及请求服务器端的数据并且在控件中显示的,但是请教了别人之后才知道这种方法现在已经不能用了,...
  • maylorChao
  • maylorChao
  • 2014年03月14日 14:43
  • 7928

GPRS模块的使用与相应SOCKET服务器的搭建

GPRS可以实现数据的远程无线上传,只需一张SIM卡,十分方便,现在我们来搭建一个 GPRS无线上传数据的例子。 1、准备工作 (1)GPRS模块,市场上不部分使用方法都大致相同 (2)正常使用有流量...
  • fengyuwuzu0519
  • fengyuwuzu0519
  • 2017年05月01日 11:26
  • 3452

WebSocket实现与服务器通信

WebSocket 改变了传统的HTTP协议的通信方式,通过 WebSocket 可以让服务器主动向浏览器推送数据,一般适用于那些实时型要求较高的应用,比如拳皇,在线聊天室。 WebSocket的一个...
  • qq_33665647
  • qq_33665647
  • 2017年04月06日 21:17
  • 598

如何理解浏览器与web服务器的通信

大家都知道上网时,在浏览器上单击页面就会获取自己所需要内容,这个涉及在web编程中浏览器与web服务器之间的通信问题。因为我对于这个问题,一直没有搞明白,所以今天写点东东,作为一个总结吧。 那么如何...
  • zhurhyme
  • zhurhyme
  • 2012年05月19日 00:23
  • 2622

Android中使用Socket来实现服务器端和客户端,进行数据通信(使用原生Socket)

1、服务器端的实现 服务器端需要通过ServerSocket来创建一个ServerSocket服务对象,然后通过accept()方法Socket对象获得来监听连接上来的客户端(这个方法是阻塞的),最后...
  • android_hdh
  • android_hdh
  • 2016年08月15日 09:57
  • 3302

Android 使用socket 实现简单的客户端和服务器端互相通信

1、服务端:public class SocketServer { public static void main(String[] args) throws IOException { ...
  • lovoo
  • lovoo
  • 2016年06月26日 22:09
  • 4705

C++ Socket多客户端和服务器通信

1 总述 关于Socket通信主要采用了C++编程,实现多线程通信,多个客户端同时和服务器通信,并支持服务器以广播的形式向所有客户端发送消息,该历程未加界面。具体的细节和源码见下分析 2 执行流程 服...
  • u011599639
  • u011599639
  • 2017年05月05日 10:33
  • 2225
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:使用Socket API如何与WEB服务器通信
举报原因:
原因补充:

(最多只允许输入30个字)