[美丽的代码]---PHP用SOCKET实现(客户端---服务端)通信
时间:2008-09-26
来源:互联网
客户端与服务端的代码分别如下:
Server.php
<?php
error_reporting(E_ALL);
set_time_limit(0);
ob_implicit_flush();
//本地IP
$address = 'localhost';
//设置用111端口进行通信
$port = 111;
//创建SOCKET
if (($sock = socket_create(AF_INET, SOCK_STREAM, SOL_TCP)) < 0) {
echo "socket创建失败原因 " . socket_strerror($sock) . "\n";
}
if (($ret = socket_bind($sock, $address, $port)) < 0) {
echo "创建套接字失败原因 " . socket_strerror($ret) . "\n";
}
//监听
if (($ret = socket_listen($sock, 5)) < 0) {
echo "监听失败原因 " . socket_strerror($ret) . "\n";
}
do {
//接收命令
if (($msgsock = @socket_accept($sock)) < 0) {
echo "命令接收失败原因: " . socket_strerror($msgsock) . "\n";
break;
}
$msg = "\nPHP Test Server. \n" .
"用quit,shutdown,sun...等命令测试.\n";
@socket_write($msgsock, $msg, strlen($msg));
do {
if (false === ($buf = @socket_read($msgsock, 2048, PHP_NORMAL_READ))) {
echo "socket_read() failed: reason: " . socket_strerror($ret) . "\n";
break 2;
}
if (!$buf = trim($buf)) {
continue;
}
if ($buf == 'quit') {
break;
}
if ($buf == 'shutdown') {
socket_close($msgsock);
break 2;
}
if ($buf == 'sun') {
echo'what are you doing?';
}
$talkback = "Backinformation : '$buf'.\n";
socket_write($msgsock, $talkback, strlen($talkback));
echo "$buf\n";
} while (true);
socket_close($msgsock);
} while (true);
socket_close($sock);
?>
Client.php
<?php
error_reporting(E_ALL);
//端口111
$service_port = 111;
//本地
$address = 'localhost';
//创建 TCP/IP socket
$socket = socket_create(AF_INET, SOCK_STREAM, SOL_TCP);
if ($socket < 0) {
echo "socket创建失败原因: " . socket_strerror($socket) . "\n";
} else {
echo "OK,HE HE.\n";
}
$result = socket_connect($socket, $address, $service_port);
if ($result < 0) {
echo "SOCKET连接失败原因: ($result) " . socket_strerror($result) . "\n";
} else {
echo "OK.\n";
}
//发送命令
$in = "HEAD / HTTP/1.1\r\n";
$in .= "Connection: Close\r\n\r\n";
$out = '';*/
echo "Send Command..........";
$in = "sun\n";
socket_write($socket, $in, strlen($in));
echo "OK.\n";
echo "Reading Backinformatin:\n\n";
while ($out = socket_read($socket, 2048)) {
echo $out;
}
echo "Close socket........";
socket_close($socket);
echo "OK,He He.\n\n";
这两段代码是简单介绍用PHP实现客户端和服务端的通信
client.php
server.php
具体操作,在DOS下用PHP命令打开SERVER,处于监听状态..
再打开一个DOS窗口,用PHP命令打开CLIENT,会得到服务端的回应....
如果你看懂了,现在你可以关闭你的阿帕奇了,打开端口为80,用这程序实现打开一个网站的首页..留给还不会的人思考..
作者: lxylxy888666 发布时间: 2008-09-26
作者: 学习代码 发布时间: 2008-09-28
server.php
代码都是一样的
作者: baker95935 发布时间: 2008-10-10
作者: lxylxy888666 发布时间: 2008-10-10
if (false === ($buf = @socket_read($msgsock, 2048, PHP_NORMAL_READ))) {
这句话MS不应该指定PHP_NORMAL_READ
当php版本大于4.1.0后运行本程序会出错
作者: ironcrane 发布时间: 2008-10-24

作者: lxylxy888666 发布时间: 2008-10-26
Warning: socket_bind() [function.socket-bind]: unable to bind address [0]: 通常每个套接字地址(协议/网络地址/端口)只允许使用一次。 in E:\xampp\htdocs\socket\Server.php on line 27
Warning: socket_listen() [function.socket-listen]: unable to listen on socket [0]: 提供了一个无效的参数。 in E:\xampp\htdocs\socket\Server.php on line 35
作者: yynet 发布时间: 2009-08-05
换个端口试
作者: jfk0514 发布时间: 2009-08-17
作者: 杰宇奕 发布时间: 2009-09-27
日收入100-500元
提供全天稳定计划
保证日赚100-500元
可进群观察3天
群号:4749267 1对1指导 保教保会
时时彩稳赚群
日收入100-500元
提供全天稳定计划
保证日赚100-500元
可进群观察3天
群号:4749267 1对1指导 保教保会
后一计划
1006-48至1006-51期 五码【75649】 2期中 (1006-49期开 82617)
1006-50至1006-53期 五码【14657】 1期中 (1006-50期开 74807)
1006-51至1006-54期 五码【23471】 4期中 (1006-54期开 54253)
1006-55至1006-58期 五码【37290】 1期中 (1006-55期开 53099)
1006-56至1006-59期 五码【28945】 1期中 (1006-56期开 12525)
1006-57至1006-60期 五码【84635】 1期中 (1006-57期开 52725)
1006-58至1006-61期 五码【24753】 2期中 (1006-59期开 69624)
1006-60至1006-63期 五码【12807】 1期中 (1006-60期开 78422)
1006-61至1006-64期 五码【38940】 1期中 (1006-61期开 60580)
1006-62至1006-65期 五码【87462】 3期中 (1006-64期开 54782)
1006-65至1006-68期 五码【58192】 4期中 (1006-68期开 02912)
1006-69至1006-72期 五码【89743】 1期中 (1006-69期开 64863)
70-01期 五码【60352】 1期中 (70期开 26663)
71-02期 五码【23049】 1期中 (71期开 82682)
共125个计划,正确124,错误1,正确率99.20%。
最大连对108,平均连对62,当前连对108。
最大连错1,平均连错1,当前连错0
后二计划
1006-44至1006-47期 复式七码【5167409】 1期中 (1006-44期开98270)
1006-45至1006-48期 复式七码【1563480】 3期中 (1006-47期开00440)
1006-48至1006-51期 复式七码【6318429】 4期中 (1006-51期开22618)
1006-52至1006-55期 复式七码【2197034】 2期中 (1006-53期开50530)
1006-54至1006-57期 复式七码【3065429】 1期中 (1006-54期开54253)
1006-55至1006-58期 复式七码【6701298】 4期中 (1006-58期开81396)
1006-59至1006-62期 复式七码【5298601】 3期中 (1006-61期开60580)
1006-62至1006-65期 复式七码【6214780】 3期中 (1006-64期开54782)
1006-65至1006-68期 复式七码【3275610】 2期中 (1006-66期开46370)
1006-67至1006-70期 复式七码【1360745】 3期中 (1006-69期开64863)
共107个计划,正确103,错误4,正确率96.26%。
最大连对37,平均连对21,当前连对20。
最大连错1,平均连错1,当前连错0
后三
1006-32至1006-37期 万能七码【0156789】 4期中 (1006-35期开39616)
1006-36至1006-41期 万能七码【0123489】 4期中 (1006-39期开89814)
1006-40至1006-45期 万能七码【0123489】 1期中 (1006-40期开15839)
1006-41至1006-46期 万能七码【1234567】 2期中 (1006-42期开31512)
1006-43至1006-48期 万能七码【0345679】 1期中 (1006-43期开53496)
1006-44至1006-49期 万能七码【0156789】 2期中 (1006-45期开35655)
1006-46至1006-51期 万能七码【0245678】 2期中 (1006-47期开00440)
1006-48至1006-53期 万能七码【0345679】 1期中 (1006-48期开22470)
1006-49至1006-54期 万能七码【0345679】 4期中 (1006-52期开23050)
1006-53至1006-58期 万能七码【2356789】 2期中 (1006-54期开54253)
1006-55至1006-60期 万能七码【0245678】 2期中 (1006-56期开12525)
1006-57至1006-62期 万能七码【0123489】 4期中 (1006-60期开78422)
重庆时时彩-后三组选(自定义-万能七码6期计划)
------------------------------------------
共139个计划,正确135,错误4,正确率97.12%。
最大连对99,平均连对27,当前连对2。
最大连错1,平均连错1,当前连错0。
------------------------------------------
作者: 琨凡城 发布时间: 2009-10-07
热门阅读
-
office 2019专业增强版最新2021版激活秘钥/序列号/激活码推荐 附激活工具
阅读:74
-
如何安装mysql8.0
阅读:31
-
Word快速设置标题样式步骤详解
阅读:28
-
20+道必知必会的Vue面试题(附答案解析)
阅读:37
-
HTML如何制作表单
阅读:22
-
百词斩可以改天数吗?当然可以,4个步骤轻松修改天数!
阅读:31
-
ET文件格式和XLS格式文件之间如何转化?
阅读:24
-
react和vue的区别及优缺点是什么
阅读:121
-
支付宝人脸识别如何关闭?
阅读:21
-
腾讯微云怎么修改照片或视频备份路径?
阅读:28