PHP中的网络编程 -- Socket篇
来源:互联网 发布:黑暗之魂3卡顿优化补丁 编辑:程序博客网 时间:2024/05/22 14:11
作为WEB应用,网络编程是必不可少的。在实际的应用中,所需要网络编程的是
1.HTTP协议的请求,比如上传、下载什么的;
2.就是TCP/IP层的操作。比如,公司内部的协议解析。再往底层就基本没有了。
对于TCP/IP层的操作,在我们这边有内部的通信协议。然后,在这一层的网络通信基本都是很底层的。所以,基本都是使用pack, unpack以及位移等操作,不过,最重要的就是socket的编程。另外,还有文件的操作,比如使用到fwrite和fread.在某些地方还以使用fget, fput函数。简单的介绍下sock编程:
PHP的Socket基本上使用fsocketopen()和socket_*函数集。简单的使用如下:
<?php$host='www.sina.com.cn'; $page='/index.html';$fp = fsockopen($host, 80, $errno, $errdesc) or die('connect to$host failed');$request = "GET $page HTTP/1.1 \r\n";$request .= "HOST: $host\r\n";$request .="Referer: $host\r\n"; fpus($fp, $request);while(!feof($fp)){$page[] = fgets($fp, 1024);} fcolse($fp); echo "服务器返回".(count($page))."行";?>
这个例子就是建立一个短连接。下面展示如何发起一个阻塞式(block)连接,即服务器如果不返回数据流,则一直保持连接状态,一但有数据流传入,取得内容后就立即断开连接。
<?php $serverDomain = 'www.sohu.com'; $port = 80; $request = 'GET /index.html HTTP/1.0\r\n'; $request .= "Host:$serverDomain\\r\\n"; $request .= 'Connection: close\r\n\r\n'; $connectTimeout = 1.5; $responseTimeout = 2; $conn = fsockopen($serverDomain, $port,$errno, $errstr, $connectTimeout); if(!$conn){ throw new Exception('unable connect.'); }else{ stream_set_blocking($conn, TRUE); stream_set_timeout($conn,$responseTimeout); } fwrite($conn, $request); $response = stream_get_contents($conn); echo $response; fclose($conn);?>
- PHP中的网络编程 -- Socket篇
- PHP socket 网络编程实例
- PHP socket 网络编程实例
- php网络编程socket通讯
- PHP socket网络编程之使用curl
- [python&php 网络编程]重用socket地址
- PHP的Socket网络编程入门指引
- Java基础篇Socket网络编程中的应用实例
- socket编程之三:socket网络编程中的常用函数
- socket网络编程中的头文件
- socket Linux 下网络编程中的select
- android中的网络通信(一) socket编程
- 黑马程序员_java中的网络编程Socket
- Socket网络编程中的1448问题
- socket网络编程中的数据传输的问题
- java中的网络支持-socket编程
- Socket网络编程中的一些问题(Linux)
- Socket网络编程中的函数详解
- HTML标记
- HreoWinGauge2.0组件集应用示例----温度计(1)
- 排序二叉树常规操作(搜索,插入,删除,最大节点,最小节点)
- iPhone项目的BaseSDK和DeploymentTarget
- Triangle Counting(n范围内能组成多少个三角形)
- PHP中的网络编程 -- Socket篇
- source命令(转载)
- R.java was modified manually! Reverting to generated version!
- RFT(Rational Functional Test)是IBM开发的一套自动化测试工具,可以测试web, GUI和console。
- 抉择男女
- 14个忠告让你脱颖而出
- android_ SharedPreferences(偏好设置)保存数据
- 字符转为运算符
- 招聘高级java工程师要求