转自:思齐-socket发送http请求

socket方式:

$socket = socket_create(AF_INET, SOCK_STREAM, SOL_TCP);
//socket_set_option($socket, SOL_SOCKET, SO_SNDTIMEO, array("sec"=>20, "usec"=>0));
socket_connect($socket, 'www.baidu.com', 80);//里面的换行代表 \r\n 注意拷贝的代码后面可能有空格
$http = <<<eof
GET / HTTP/1.0
Accept: */*
User-Agent: Lowell-Agent
Host: www.baidu.com
Connection: Closeeof;socket_write($socket, $http, strlen($http));while($str = socket_read($socket, 1024))
{echo $str;
}socket_close($socket);

fsockopen方式:

$fp = fsockopen("www.baidu.com", 80, $errno, $errstr, 30);if (!$fp) {echo "$errstr ($errno)<br />\n";
} else {$out = "GET / HTTP/1.1\r\n";$out .= "Host: www.baidu.com\r\n";$out .= "Connection: Close\r\n\r\n";fwrite($fp, $http);while (!feof($fp)) {echo fgets($fp, 128);}fclose($fp);
}

原始socket方式:

$fp = stream_socket_client("tcp://www.baidu.com:80", $errno, $errstr, 30);
if (!$fp) {echo "$errstr ($errno)<br />\n";
} else {$http = <<<eof
GET / HTTP/1.0
Accept: */*
User-Agent: Lowell-Agent
Host: www.baidu.com
Connection: Closeeof;fwrite($fp, $http);while (!feof($fp)) {echo fgets($fp, 1024);}fclose($fp);
}

stream  方式(get):

$http = <<<eof
Host: www.baidu.com
User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:27.0) Gecko/20100101 Firefox/27.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: zh-cn,zh;q=0.8,en-us;q=0.5,en;q=0.3
Cookie: BAIDUID=79D98B1AD8436C57B967E111E484F1CD:FG=1; BDUSS=lF-UFFOanFPVG92NmF4U3NiTEoxOFh4YVBCTnZaMUtoTUNhZmxrWThwN25IaUJVQVFBQUFBJCQAAAAAAAAAAAEAAADzo1gKc2lxaW5pYW8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOeR-FPnkfhTU; BAIDUPSID=79D98B1AD8436C57B967E111E484F1CD; BD_UPN=13314352; BD_HOME=1; H_PS_PSSID=10047_1435_10874_10212_10501_10496_10753_10796_10219_10355_10666_10597_10095_10658_10442_10700_10460_10360_10618; sug=3; sugstore=0; ORIGIN=2; bdime=0
Connection: keep-alive
Cache-Control: max-age=0
eof;$hdrs = array('http' =>array('header' => $http,'timeout'=>1, //超时 秒'method' => 'GET', //默认方式         'protocol_version' => '1.1', //默认为 1.0),);//参数格式参考 http://php.net/manual/zh/context.http.php
//curl方式的格式可以参考; http://php.net/manual/zh/context.curl.php$context = stream_context_create($hdrs);
echo file_get_contents('http://www.baidu.com', 0, $context);

stream  方式 post:

$postdata = http_build_query(array('act'=>'save', 'id'=>387171));$http = <<<eof
Host: www.baidu.com
User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:27.0) Gecko/20100101 Firefox/27.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: zh-cn,zh;q=0.8,en-us;q=0.5,en;q=0.3
Content-Type: application/x-www-form-urlencoded; charset=UTF-8
Cookie: BAIDUID=79D98B1AD8436C57B967E111E484F1CD:FG=1; BDUSS=lF-UFFOanFPVG92NmF4U3NiTEoxOFh4YVBCTnZaMUtoTUNhZmxrWThwN25IaUJVQVFBQUFBJCQAAAAAAAAAAAEAAADzo1gKc2lxaW5pYW8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOeR-FPnkfhTU; BAIDUPSID=79D98B1AD8436C57B967E111E484F1CD; BD_UPN=13314352; BD_HOME=1; H_PS_PSSID=10047_1435_10874_10212_10501_10496_10753_10796_10219_10355_10666_10597_10095_10658_10442_10700_10460_10360_10618; sug=3; sugstore=0; ORIGIN=2; bdime=0
Connection: keep-alive
Cache-Control: max-age=0
eof;#注意post方式需要增加Content-Type$hdrs = array('http' =>array('header' => $http,'timeout'=>1, //超时 秒'method' => 'POST','content' => $postdata,         'protocol_version' => '1.1', //默认为 1.0),);//参数格式参考 http://php.net/manual/zh/context.http.php
//curl方式的格式可以参考; http://php.net/manual/zh/context.curl.php$context = stream_context_create($hdrs);
echo file_get_contents('http://test.cm/song.php', 0, $context);

注意:http1.1 中必须包含 Host 头, 而 http1.0中则可以没有

HTTP超文本传输协议-HTTP/1.1中文版

转载于:https://www.cnblogs.com/lishuaige/p/5428707.html

socket发送http请求相关推荐

  1. python socket 域名_python用socket发送http请求

    python用socket发送http请求 平时我们使用浏览器浏览web资源,写爬虫的时候,我们会使用封装好的库,比如requests,或者使用爬虫框架.工欲善其事必先利其器,顶层封装好的东西,是为了 ...

  2. Android Wifi认证(Portal)代码解析DNS并使用Socket发送Http请求完成认证

    最近在一能开启多网络上网的Android系统中遇到连接认证WIFI问题,通过http://connectivitycheck.gstatic.com/generate_204不能完成认证. 可能原因为 ...

  3. java 常见几种发送http请求案例

    java 常见几种发送http请求案例 直接换成CloseableHttpClient还不行,需要这样使用CloseableHttpClient httpClient = HttpClientBuil ...

  4. 用socket发送流数据示--用 php://input? 接受post数据(可实现php和c/c++数据通讯)

    文件:phpinput_post.php 发送post数据(流数据),利用socket发送 <?php /** * 客服端发送post流数据的请求 */ //对数据进行封包 function p ...

  5. socket发送请求,协程

    1.socket发送请求 1 #发送请求的方式 2 3 #方式一 4 import requests 5 6 ret = requests.get("https://www.baidu.co ...

  6. 电脑多网卡模式下,使用特定网口发送HTTP请求的代码实现(HttpClient4、Socket)

    目录 前言: 解决方案: 基于HttpClient 4.5.13: 基于Socket: 快速导航: 前言: 我的电脑上有多个网卡,同时链接有多个网络.在写爬虫的时候想使用特定的网卡发送请求,这样就不会 ...

  7. Java Socket发送与接收HTTP消息简单实现

    在上次Java Socket现实简单的HTTP服务我 们实现了简单的HTTP服务,它可以用来模拟HTTP服务,用它可以截获HTTP请求的原始码流,让我们很清楚的了解到我们向服务发的HTTP消息的结 构 ...

  8. python并发发送http请求_用python异步发送http请求来提升效率

    需求 在一个我做的项目里,业务流程有一环需要调用http的接口. 这个接口本身是同步处理的,返回响应的速度会根据要处理的数据量不同而不同. 为了不拖慢主业务流程,客户要求采用异步的方式来请求,即只要得 ...

  9. python udp 直播_[Python] socket发送UDP广播实现聊天室功能

    原博文 2018-11-24 12:33 − 一.说明 本文主要使用socket.socket发送UDP广播来实现聊天室功能. 重点难点:理解UDP通讯流程.多线程.UDP广播收发等. 测试环境:Wi ...

  10. socket不能bind请求的地址_socket通信原理

    一.什么是Socket? 1.Socket是一个网络通信的套接字(接口) 二.Socket的实现流程? 1.Socket在客户端和服务端发生了什么? 服务器:a.socket()创建socket对象b ...

最新文章

  1. poj 2516 最小费用最大流
  2. windows live writer 插件 VSPaste 中文乱码和去空白链接方案
  3. [译] 前端组件设计原则
  4. cmd代码表白_手把手教你把Python代码转成exe
  5. R统计绘图 - 热图简化
  6. 优化:代码移动code motion
  7. 【Gym-100085 K】Kingdom Roadmap【树上构造题】
  8. 软件性能之进程优先级
  9. unity3d中XML文件报错原因的解决方案
  10. 计算机期末考试方案,初中信息技术期末考试方案.doc
  11. css3帮助文档,CSS3 最新版参考手册
  12. 0723Python总结-递归函数及练习
  13. 拼多多商品详情百亿补贴数据采集接口代码展示
  14. Kali BeEF MSF的使用
  15. 电驴链接服务器老是无响应,全部服务器无响应!!!
  16. Android模拟器知识以及改造
  17. Apollo学习笔记(19)UKF
  18. 软件设计师教程(九)计算机系统知识-软件工程基础知识
  19. 类似 MS Project 的项目管理工具有哪些
  20. wamp 不起启动一直是黄的

热门文章

  1. django 引入同目录下py文件_第 05 篇:Django 的接客之道
  2. 2021/4/2听宫老师演讲有感。
  3. 用python画一只皮卡丘_用python画一只可爱的皮卡丘实例
  4. 计算机应用基础统考模拟练习系统,网教计算机应用基础统考综合模拟练习题(一)...
  5. 网件R8000路由器怎么云存储_给大姐姐换个“控制中心”——NETGEAR 网件 R7800 AC2600M 路由器 简晒_路由器...
  6. Python matplotlip画多张图
  7. dcrs 端口配ip_DCRS-5950配置(划分VLAN,根据每个VLAN通过DHCP分配IP地址)
  8. java put请求_计算机毕业设计中用java实现小程序推送(springboot实现)
  9. 2016年WiFi行业技术发展趋势解析
  10. nginx利用geo模块做限速白名单以及geo实现全局负载均衡的操作记录