当前位置: 首页 > 图文教程 > 网络编程 > PHP > PHP实现Socket服务器的代码

PHP
在 php 中使用 sockets:从新闻组中获取文章
正则表达式中的特殊字符
无限分类与树型论坛的实现方法
谈谈生成静态页面的一些经验
使用php的编码功能-mime.inc
缓存PHP页面的代码,可以减轻CPU和MYSQL负担
php控制用户的浏览器
CSS反转字符加密邮箱地址
用PHP调用Lucene包来实现全文检索
phpbb mod for google 完全解决方案
如何避免表单的重复提交
用PHP处理多个同名复选框
文件下载统计php编程
利用Editplus2的用户工具功能来即时调试PHP
实例学习PHP之FastTemplate模板篇
模板--为什么和如何在PHP中使用它们
PHP中实现大图自动缩成小图(及GD库的安装)
采用 PEAR 来缓冲 PHP 程序(一)
采用 PEAR 来缓冲 PHP 程序(二)
变量的“追随”:cookie与session

PHP实现Socket服务器的代码


出处:互联网   整理: 软晨网(RuanChen.com)   发布: 2009-10-12   浏览: 88 ::
收藏到网摘: n/a

<?php
ob_implicit_flush();
set_time_limit(0);
$address = "192.40.7.93";//换成你自己的地址
$port = 10000;
if(($socket = socket_create(AF_INET,SOCK_STREAM,SOL_TCP)) == false)
echo "错误(socket_create):".socket_strerror(socket_last_error())."<br />";
if(socket_bind($socket,$address,$port) == false)
echo "错误(socket_bind):".socket_strerror(socket_last_error())."<br />";
if(socket_listen($socket) == false)
echo "错误(socket_listen):".socket_strerror(socket_last_error())."<br />";
/*
After the socket socket has been created using socket_create() and bound to a name with socket_bind(),
it may be told to listen for incoming connections on socket.
*/
while(true){
if(($msgSocket = socket_accept($socket)) == false){
echo "错误(socket_accept):".socket_strerror(socket_last_error())."<br />";
break;
}
/*
this function will accept incoming connections on that socket.
Once a successful connection is made, a new socket resource is returned, which may be used for communication.
If there are multiple connections queued on the socket, the first will be used.
If there are no pending connections, socket_accept() will block until a connection becomes present.
If socket has been made non-blocking using socket_set_blocking() or socket_set_nonblock(), FALSE will be returned.
*/
$msg = "Welcome!<br />";
//socket_write($msg,$msg,strlen($msg));
$command = "";
while(true){
if(($buf = socket_read($msgSocket,2048,PHP_BINARY_READ)) == false){
echo "错误(socket_read):".socket_strerror(socket_last_error())."<br />";
break 2;
}
/*
The function socket_read() reads from the socket resource socket created by the socket_create() or socket_accept() functions.
The maximum number of bytes read is specified by the length parameter.
Otherwise you can use \r, \n, or \0 to end reading (depending on the type parameter, see below).
*/
/*
if(!$buf = trim($buf))
continue; // ????
if($buf == "quit")
break;
if($buf == "shutdown"){
socket_close($msgSocket);
break 2;
}
$tallBack = "You say:$buf\n";
socket_write($msgSocket,$tallBack,strlen($tallBack));
*/
if(ord($buf) != 13)
$command .= $buf;
else{
$command1 = "You Say:$command\r\n";
socket_write($msgSocket,$command1,strlen($command1));
echo "User typed:".$command."<br />";
$command = "";
}
}
socket_close($msgSocket);
}
socket_close($socket);
?>

然后打开CMD,输入:telnet 192.40.7.93 10000,自己体验去吧!

注,要把:php_sockets.dll 打开