TCP/UDP Socket调试工具
PHP在WIN下操作socket最好用命令行运行程序,一般可以用于大文件的上传
要建立一个简单的服务,如果不考虑性能方面的问题,比如并发100 左右的服务,可以简单的用 Socket + Pcntl(linux)。来实现
1.php加入环境变量,开启socket扩展
server端
<?php //确保在连接客户端时不会超时 set_time_limit(0); $ip = '127.0.0.1'; $port = 1935; /* +------------------------------- * @socket通信整个过程 +------------------------------- * @socket_create * @socket_bind * @socket_listen * @socket_accept * @socket_read * @socket_write * @socket_close +-------------------------------- */ /*---------------- 以下操作都是手册上的 -------------------*/ if (($sock = socket_create(AF_INET, SOCK_STREAM, SOL_TCP)) < 0) { echo "socket_create() 失败的原因是:" . socket_strerror($sock) . "\n"; } if (($ret = socket_bind($sock, $ip, $port)) < 0) { echo "socket_bind() 失败的原因是:" . socket_strerror($ret) . "\n"; } if (($ret = socket_listen($sock, 4)) < 0) { echo "socket_listen() 失败的原因是:" . socket_strerror($ret) . "\n"; } $count = 0; do { if (($msgsock = socket_accept($sock)) < 0) { echo "socket_accept() failed: reason: " . socket_strerror($msgsock) . "\n"; break; } else { //发到客户端 $msg = "测试成功!\n"; socket_write($msgsock, $msg, strlen($msg)); echo "测试成功了啊\n"; $buf = socket_read($msgsock, 8192); $talkback = "收到的信息:$buf\n"; echo $talkback; if (++$count >= 5) { break; } } //echo $buf; socket_close($msgsock); } while (true); socket_close($sock); ?>
没有反映,对现在服务端的程序已经开始运行,端口已经开始监听了。
运行netstat -ano | find "1935"可以查看端口情况,我的是1935端口
端口已经处于LISTENING状态了。接下来我们只要运行客户端程序即可连接上。上代码
<?php error_reporting(E_ALL); set_time_limit(0); echo "<h2>TCP/IP Connection</h2>\n"; $port = 1935; $ip = "127.0.0.1"; /* +------------------------------- * @socket连接整个过程 +------------------------------- * @socket_create * @socket_connect * @socket_write * @socket_read * @socket_close +-------------------------------- */ $socket = socket_create(AF_INET, SOCK_STREAM, SOL_TCP); if ($socket < 0) { echo "socket_create() failed: reason: " . socket_strerror($socket) . "\n"; } else { echo "OK.\n"; } echo "试图连接 '$ip' 端口 '$port'...\n"; $result = socket_connect($socket, $ip, $port); if ($result < 0) { echo "socket_connect() failed.\nReason: ($result) " . socket_strerror($result) . "\n"; } else { echo "连接OK\n"; } $in = "Ho\r\n"; $in .= "first blood\r\n"; $out = ''; if (!socket_write($socket, $in, strlen($in))) { echo "socket_write() failed: reason: " . socket_strerror($socket) . "\n"; } else { echo "发送到服务器信息成功!\n"; echo "发送的内容为:<font color='red'>$in</font> <br>"; } while ($out = socket_read($socket, 8192)) { echo "接收服务器回传信息成功!\n"; echo "接受的内容为:", $out; } echo "关闭SOCKET...\n"; socket_close($socket); echo "关闭OK\n"; ?>
SERVER端常驻后台实现:
用了比较笨的方法,因为怕PHP常驻后台不靠谱,用crontab保证即使出了错断掉也可以重启(悲剧的是crontab最小颗粒是1分钟),然后用shell保证不会重复启动(重复启动会绑定不了端口报错)
check.sh文件 保证脚本不会重复启动
start() { c=`ps w -C php|grep $1|wc -l` if [ $c -lt 1 ] then /usr/local/bin/php $1& fi } BASE_PATH=$(dirname `which $0`) cd $BASE_PATH start server.php
相关推荐
workerman是一个高性能的PHP socket 服务器框架,workerman基于PHP多进程以及libevent事件轮询库,PHP开发者只要实现一两个接口,便可以开发出自己的网络应用,例如Rpc服务、聊天室服务器、手机游戏服务器等。...
cmd运行start_for_win.bat监控
安装comsenseEXP,配置windows上php环境变量(目的是使得win命令行上能直接运行php命令) b. 在cmd命令行上输入: php server.php c. 在cmd命令行上输入: php client.php 4. 运行过程中也许碰到问题,亲别灰心...
php /* * php smtp发送邮件Scoket类 * ZhozPhpSmtpSendMail.php * Created on 2008/09/02 zhoz.com * @author zhoz * v 1.72 update 2008/09/26 zhoz.Com */ class ZhozPhpSmtpSendMail { //您的SMTP 服务器供应商,...
(用navicat将chat.sql文件导入,配置数据库链接,html文件内修改ip和域名,修改api/chat内的域名,开启8282,1238端口,进入vendor/GatewayWorker-for-win下,win环境start_for_win.bat,linux下执行'php start.php...
本文列举了所有关于PHP语言中使用socket相关服务的一些函数。注意使用如下函数之前,你需要确保你的socket已打开,如果你没有打开,请编辑你的php.ini文件,去掉下面这行前面的注释(分号): 复制代码 代码如下: ...
注:添加抄送、暗送仅win平台下smtp方式支持 支持多种邮件编码包括:8bit,base64,binary和quoted-printable 支持冗余SMTP服务器,即可以指定主smtp服务器地址也只可以指定备份smtp服务器 支持带附件的邮件,可以为...
一款功能强大的PHP框架,Workerman是一款纯PHP开发的开源高性能的PHP socket 服务框架。
[PHP] ;;;;;;;;;;;;;;;;;;; ; About php.ini ; ;;;;;;;;;;;;;;;;;;; ; PHP's initialization file, generally called php.ini, is responsible for ; configuring many of the aspects of PHP's behavior. ; PHP...
如果不开启,会出现很多麻烦,使用方法,双击打开源码目录下的start_for_win.bat,并保持cmd窗口打开,此功能仅在windows下测试过,linux大同小异主要执行php start_register.php start_gateway.php start_...
win32service Functions CLX. xattr Functions CLXI. xdiff Functions CLXII. XML 语法解析函数 CLXIII. XML-RPC 函数 CLXIV. XMLReader functions CLXV. XSL functions CLXVI. XSLT Functions CLXVII. YAZ ...
1 使用默认mail函数 2 通过SOCKET连接SMTP服务器发送(支持 ESMTP 验证) 3 通过调用CDONTS.NewMail(虚拟SMTP发信)组件发送Email(仅 win32 下有效) 4 通过调用jmail 组件发送Email(仅 win32 下有效...
win32service — win32service Functions xattr — xattr Functions xdiff — xdiff Functions XML — XML 语法解析函数 XML-RPC — XML-RPC 函数 XMLReader — XMLReader functions XMLWriter — XMLWriter ...
Workerman是一款纯PHP开发的开源高性能的PHP socket 服务器框架。被广泛的用于手机app、移动通讯,微信小程序,手游服务端、网络游戏、PHP聊天室、硬件通讯、智能家居、车联网、物联网等领域的开发。 支持TCP长连接...
第四篇 文件目录操作篇 第九章 Directories函数 第十章 FilePro函数 第十一章 FileSystem函数 第十二章 Stream函数 第五篇 网络通信篇 第十三章 Socket函数 第十四章 SNMP函数 第十五章 Session函数 第十六章 URL...
gatewayworker在Windows下的基础开发包,用于PHP的socket开发。
第四篇 文件目录操作篇 第九章 Directories函数 第十章 FilePro函数 第十一章 FileSystem函数 第十二章 Stream函数 第五篇 网络通信篇 第十三章 Socket函数 第十四章 SNMP函数 第十五章 Session函数 第十六章 URL...
1、win下安装,memcached -d installwin下启动,memcached -d start关闭,memcached -d stop 1_1、三种方式访问memcachememcachememcachedphp (不依赖于扩展socket操作) 2、memcache扩展(函数)===访问缓存系统。...