关于php的socket
这里仅记录tcp协议:
关于server:
<?php
/**
* 测试关于php的socket函数
*/
/**
* 最基本的socket,服务器端:
* 创建
* $sock = socket_create(AF_INET,SOCK_STREAM,SOL_TCP);
* 绑定
* socket_bind($sock,'127.0.0.1');
* 监听
* socket_listen($sock,5);
* 得到连接
* $msgSock = socket_accept($sock);
* socket_write();
* socket_read();
*/
$address = '127.0.0.1';
$port = 12345;
if(($sock = socket_create(AF_INET, SOCK_STREAM, getprotobyname('tcp')))===false)
{
echo "socket create failed ".socket_strerror(socket_last_error())."\r\n";
}
//绑定
if(socket_bind($sock,$address,$port) === false)
{
echo 'socket bind failed '.socket_strerror(socket_last_error())."\r\n";
}
//监听
if(socket_listen($sock,10) === false)
{
echo 'socket listen failed '.socket_strerror(socket_last_error())."\r\n";
}
do
{
$msgSock = socket_accept($sock);
if($msgSock === false)
{
echo 'socket accept failed '.socket_strerror(socket_last_error())."\r\n";
break;
}
//发送到客户端
$msg = "server连接成功了!\r\n";
socket_write($msgSock,$msg,strlen($msg));
//读从客户端接收的数据
$reciveMsg = socket_read($msgSock,8192);
echo "reciveed msg is: ".$reciveMsg."\r\n";
socket_close($msgSock);
}while(true); socket_close($sock);
关于client:
<?php
/**
* 关于客户端的socket
*/
/**
* 函数
* socket_create();
* socket_connect();
* socket_write();
* socket_read();
*/
$address = '127.0.0.1';
$port = 12345;
$sock = socket_create(AF_INET,SOCK_STREAM,SOL_TCP);
if($sock === false)
{
echo "socket create failed ".socket_strerror(socket_last_error())."\r\n";
}
echo "attempt to connect server...\r\n";
$result = socket_connect($sock,$address,$port);
if($result === false)
{
echo "socket connect failed ".socket_strerror(socket_last_error())."\r\n";
}
echo 'connect to server ..'."\r\n";
$msg = "client connect success\r\n";
socket_write($sock,$msg,strlen($msg));
while($out = socket_read($sock,8192))
{
echo $out."\r\n";
}
echo "close socket ..\r\n";
socket_close($sock);
php的socket还有一种套接字流,都是stream打头的函数,其中也有server和client,这里不记录
关于php的socket的更多相关文章
- socket读写返回值的处理
在调用socket读写函数read(),write()时,都会有返回值.如果没有正确处理返回值,就可能引入一些问题 总结了以下几点 1当read()或者write()函数返回值大于0时,表示实际从缓冲 ...
- Socket聊天程序——Common
写在前面: 上一篇记录了Socket聊天程序的客户端设计,为了记录的完整性,这里还是将Socket聊天的最后一个模块--Common模块记录一下.Common的设计如下: 功能说明: Common模块 ...
- Socket聊天程序——客户端
写在前面: 上周末抽点时间把自己写的一个简单Socket聊天程序的初始设计和服务端细化设计记录了一下,周二终于等来毕业前考的软考证书,然后接下来就是在加班的日子度过了,今天正好周五,打算把客户端的详细 ...
- Socket聊天程序——服务端
写在前面: 昨天在博客记录自己抽空写的一个Socket聊天程序的初始设计,那是这个程序的整体设计,为了完整性,今天把服务端的设计细化记录一下,首页贴出Socket聊天程序的服务端大体设计图,如下图: ...
- Socket聊天程序——初始设计
写在前面: 可能是临近期末了,各种课程设计接踵而来,最近在csdn上看到2个一样问答(问题A,问题B),那就是编写一个基于socket的聊天程序,正好最近刚用socket做了一些事,出于兴趣,自己抽了 ...
- Java中的Socket的用法
Java中的Socket的用法 Java中的Socket分为普通的Socket和NioSocket. 普通Socket的用法 Java中的 ...
- Android Socket连接PC出错问题及解决
最近测试问题:Android 通过Socket链接电脑,ip和端口都是正确的,也在同一网段,可android端就是报异常如下: 解决办法:测试电脑的防火墙可能开着,在控制面板把防火墙打开即可.
- Linux下的C Socket编程 -- server端的继续研究
Linux下的C Socket编程(四) 延长server的生命周期 在前面的一个个例子中,server在处理完一个连接后便会立即结束掉自己,然而这种server并不科学啊,server应该是能够一直 ...
- Mono 3.2.3 Socket功能迎来一稳定的版本
由于兴趣自己业余时间一直在搞.net下面的通讯应用,mono的存在得以让.NET程序轻松运行在Linux之下.不过经过多尝试Socket相关功能在Mono下的表现并不理想.不管性能还是吞吐能力方面离我 ...
- Demo源码放送:打通B/S与C/S !让HTML5 WebSocket与.NET Socket公用同一个服务端!
随着HTML5 WebSocket技术的日益成熟与普及,我们可以借助WebSocket来更加方便地打通BS与CS -- 因为B/S中的WebSocket可以直接连接到C/S的服务端,并进行双向通信.如 ...
随机推荐
- laravel 安装 Laravel 扩展包
问题说明 我们经常要往现有的项目中添加扩展包,有时候因为文档的错误引导,如下图来自这个文档 的: composer update 这个命令在我们现在的逻辑中,可能会对项目造成巨大伤害. 因为 comp ...
- 持续集成Jenkins+sonarqube部署教程
1 引言 1.1 文档概要 本文主要介绍jenkins,sonar的安装与集成,基于ant,maven构建.用一个例子介绍jenkins的编译打包部署,代码检查.最后集成jenkins.(现阶段只是简 ...
- flex 4 datagrid 奇偶行颜色设置
<s:DataGrid width="100%" height="100%" alternatingRowColors="[#ffFFff,#e ...
- 10、 iOS 加载图片选择imageNamed 方法还是 imageWithContentsOfFile
Apple官方的文档为生成一个UIImage对象提供了两种方法: 1. imageNamed,其参数为图片的名字: 2. imageWithContentsOfFile,其参数是图片文件的路径. 两种 ...
- xml文件查找重复元素(超简单版)
使用WPS,新建一个表格文件,将xml拖入表格,点数据,选中存在重复项的列,点高亮重复项,OK.
- web前端-雅虎34条规则优化
1.尽量减少HTTP请求次数 终端用户响应的时间中,有80%用于下载各项内容.这部分时间包括下载页面中的图像.样式表.脚本.Flash等.通过减少页面中的元素可以减少HTTP请求的次数.这是 ...
- Javascript 数字保留2位小数
整理使用Javascript函数将数值保留两位小数: 1.num.toFixed(2) //进位 2.(Math.round(num * 100) / 100).toFixed(2) //进位 3.( ...
- selenium1,selenium2,watir的比较
接触web方面的自动化测试,会接触几个常用的工具,selenium1,selenium2,watir 有的时候总是混淆,那么他们的优缺点啥的呢,在让你给项目选自动化框架,会选择哪个??? 1,语言的支 ...
- C# 手机格式验证
C# 手机格式验证 //电信手机号码正则 Regex dReg = new Regex(@"^1[3578][01379]\d{8}$"); //联通手机号正则 Regex tRe ...
- python--函数式登录程序
# Author:Tim Gu def login(username,password): """这个login函数用于用户登录的验证 :param username:用 ...