PHP 结合实例认识 Socket
一、简介
(本部分参考自 揭开Socket的神秘面纱 - 源码工作室)
请结合下图 Socket 抽象层的位置来理解。Socket 是应用层和 TCP/IP 协议族进行通信的中间软件抽象层,是一组接口。在设计模式中,就是一个门面模式,它把复杂的实现封装在接口后面,而只提供了一组简单的接口给用户调用。在普遍的程序语言中,这些接口一般是 create、bind、listen、accept、write、read、close 和 connect 等等。

二、实例
效果图

代码
服务端:Server.php
<?php
set_time_limit(0); // 去掉时间限制
ob_implicit_flush(); // 开启强制刷新 // 1. 创建Socket
$socket = socket_create(AF_INET, SOCK_STREAM, SOL_TCP); // 2. 绑定端口和IP
socket_bind($socket, '127.0.0.1', 11279); // 3. 端口监听
socket_listen($socket);
echo 'Server is listening!' . PHP_EOL; // 4. accept阻塞进程
$connect = socket_accept($socket); // 直到有连接进入,accept才会返回
echo 'Client [' . $connect . '] is accessing...' . PHP_EOL; // 5. 交互
socket_write($connect, 'Welcome, visitor! Now you can send message to the server.' . PHP_EOL);
while ($connect) {
// 获取请求
$request = socket_read($connect, 1024);
echo 'Client ['. $connect .'] message: ' . $request; // 关闭连接
if($request == "bye" . PHP_EOL){
socket_shutdown($connect);
break;
} // 发送响应
$response = 'Your sended message: ' . $request;
socket_write($connect, $response);
} // 6. 销毁Socket
socket_close($socket);
客户端:client.php
<?php
// 1. 创建Socket
$socket = socket_create(AF_INET, SOCK_STREAM, SOL_TCP); // 2. 建立连接
$result = socket_connect($socket, '127.0.0.1', 11279);
if($result === false){
socket_close($socket);
die('Socket connect failed: ' . socket_strerror(socket_last_error($socket)));
} // 3. 交互
while($result){
// 获取响应
$response = socket_read($socket, 1024);
echo $response; // 发送请求
$request = fgets(STDIN);
socket_write($socket, $request, 1024); // 关闭连接
if($request == "bye" . PHP_EOL){
socket_shutdown($socket);
break;
}
} // 4.销毁Socket
socket_close($socket);
参考链接:
PHP 结合实例认识 Socket的更多相关文章
- Socket通讯实例-基本Socket
转自:http://www.cnblogs.com/mahaisong/archive/2011/07/25/2116475.html (讲的很好,很细) 参考:http://blog.sina.co ...
- php 实例说明 socket通信机制
php 实例说明 socket通信机制 张映 发表于 2010-04-24 分类目录: php 一,socket是什么 什么是socket 所谓socket通常也称作"套接字",用 ...
- java 大文件上传 断点续传 完整版实例 (Socket、IO流)
ava两台服务器之间,大文件上传(续传),采用了Socket通信机制以及JavaIO流两个技术点,具体思路如下: 实现思路: 1.服:利用ServerSocket搭建服务器,开启相应端口,进行长连接操 ...
- storm实时计算实例(socket实时接入)
介绍 实现了一个简单的从实时日志文件监听,写入socket服务器,再接入Storm计算的一个流程. 源码 日志监听实时写入socket服务器 package socket; import java ...
- Web Service 实例基于Socket创建Web服务
ServerSocket服务器端代码如下: public static void main(String[] args) throws IOException { // 1:建立服务器端的tcp so ...
- python socket实例练习
Web Server是基于Socket编程,又称之为网络编程,socket是网络编程接口,socket可以建立网络连接,读数据,写数据.socket模块定义了一些常量参数,用来指定socket的的地址 ...
- JAVA通信系列一:Java Socket技术总结
本文是学习java Socket整理的资料,供参考. 1 Socket通信原理 1.1 ISO七层模型 1.2 TCP/IP五层模型 应用层相当于OSI中的会话层,表示层, ...
- python-网络编程-socket编程
一.TCP\IP(网络通信协议)简介 TCP:(Transmission Control Protocol)传输控制协议,面向有连接的通信协议 UDP:数据报文协议,面向无连接的通信协议 ...
- python socket server源码学习
原文请见:http://www.cnblogs.com/wupeiqi/articles/5040823.html 这里就是自己简单整理一下: #!/usr/bin/env python # -*- ...
随机推荐
- 51nod-1222-最小公倍数计数
题意 给到 \(a,b\) ,求 \[ \sum _{i=a}^b\sum _x\sum _y[x\le y][\text{lcm}(x,y)=i] \] 即最小公倍数在 \([a,b]\) 中的有序 ...
- 51nod 1574 排列转换(贪心+鸽巢原理)
题意:有两个长度为n的排列p和s.要求通过交换使得p变成s.交换 pi 和 pj 的代价是|i-j|.要求使用最少的代价让p变成s. 考虑两个数字pi和pj,假如交换他们能使得pi到目标的距离减少,p ...
- css基于文件格式使用不同的样式
a[href^="http://"]{ padding-right: 20px; background: url(external.gif) no-repeat center ri ...
- P1407 [国家集训队]稳定婚姻
题目描述 我国的离婚率连续7年上升,今年的头两季,平均每天有近5000对夫妇离婚,大城市的离婚率上升最快,有研究婚姻问题的专家认为,是与简化离婚手续有关. 25岁的姗姗和男友谈恋爱半年就结婚,结婚不到 ...
- Unified Networking Lab 安装使用IOL镜像
Unified Networking Lab 安装使用IOL镜像 Unified Networking Lab 很久以前,在一个星系远的地方,很远的工程师们为eBay寻找二手路由器来满足家庭实验的需求 ...
- Classical Binary Search
Find any position of a target number in a sorted array. Return -1 if target does not exist. 与题目 Firs ...
- NOIP2016愤怒的小鸟 题解报告 【状压DP】
题目什么大家都清楚 题解 我们知道,三点确定一条抛物线,现在这条抛物线过原点,所以任意两只猪确定一条抛物线.通过运算的出对于两头猪(x1,y1),(x2,y2),他们所在抛物线a=(y1*x2-y2* ...
- C++之智能指针20170920
/*************************************************************************************************** ...
- omnet++4.0安装使用
http://my.oschina.net/u/2269841/blog/423659 本文主要借鉴该文章在此对作者表示由衷的感谢http://blog.csdn.net/xiaobei4929/ar ...
- 什么是end-to-end神经网络?
https://www.zhihu.com/question/51435499 来源:知乎著作权归作者所有. 国立台湾大学的李宏毅教授在其机器学习课程中有讲到深度神经网络的 End-to-end Le ...