使用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是如何通过代理软件(这个软件你最好自己写一个,可以显示请求的内容的.)工作的.然后你再使用你的软件与服务器通信这样你就知道你通常出错在哪里了.

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

嵌入式web服务器后台cgi使用socket与其他进程进行通信的源码

目前项目中遇到了cgi与另一个进程进行通信的问题,我先试验了消息机制,发现消息机制根本行不通,不可靠,网上说的最多的cgi使用共享内存与其他进程通信。我这里使用socket通信,cgi作为客户端,另一...

Socket通信-web服务器基本原理(静态)

一个Web服务器也被称为HTTP服务器,它通过HTTP协议与客户端通信。这个客户端通常指的是Web浏览器。一个基于Java的Web服务器用到二个重要的类,java.net.Socket与java.ne...
  • CNM3333
  • CNM3333
  • 2013年08月27日 10:15
  • 607

使用Socket进行一台服务器与多个Android客户端进行双向通信

工具的准备: 编写Web服务端的代码:IDEA 编写Android客户端的代码: Android Studio web服务端的部署工具:Tomcat 7.0.82 代码清单: 客户端: pac...

安卓使用socket实现客户端服务器通信问题

这两天再做一个项目,其中一个功能是模拟在线聊天,所以接触了socket网络编程。由于楼主之前从没接触过socket,属于现学现卖,进度十分有限,而且遇到了不少问题。 步骤: 1.首先客户端建立一个...

使用系统文件实现socket通信--服务器端搭建

如何使用系统自带文件实现socket通信 1.首先搭建服务器端 注意: 这里创建文件是在Xcode的OSX下面的命令行创建的 因为一会客户端使用的iOS模拟器,而Xcode是不能同时运行两个模拟器的 ...

Unity3d使用Socket与java服务器通信

---------------------------客户端---------------------------------------- [csharp] view pl...

NDK 4 使用Socket与服务器通信

http://blog.csdn.net/birdsaction/article/details/17095459 Android是基于Linux内核的,NDK提供的头文件基本都是 posi...

C# 使用Socket实现服务器与客户端的通信

一. 实验要求 1.设计程序,分别构建通信的两端:服务器端和客户端应用程序,套接字类型为面向连接的Socket,自己构建双方的应答模式,实现双方的数据的发送和接收(S发给C,C 发给S)。 2....

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

1、服务端:public class SocketServer { public static void main(String[] args) throws IOException { ...
  • lovoo
  • lovoo
  • 2016年06月26日 22:09
  • 4207
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:使用Socket API如何与WEB服务器通信
举报原因:
原因补充:

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