PHP实现Socket服务器的代码
更新时间:2008年04月03日 19:08:47 作者:
PHP实现Socket服务器的代码
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())."
";
if(socket_bind($socket,$address,$port) == false)
echo "错误(socket_bind):".socket_strerror(socket_last_error())."
";
if(socket_listen($socket) == false)
echo "错误(socket_listen):".socket_strerror(socket_last_error())."
";
/*
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())."
";
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!
";
//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())."
";
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."
";
$command = "";
}
}
socket_close($msgSocket);
}
socket_close($socket);
?>
然后打开CMD,输入:telnet 192.40.7.93 10000,自己体验去吧!
注,要把:php_sockets.dll 打开
相关文章
PHPMailer 中文使用说明小结,对于操作phpmailer的朋友作为参考资料。2010-01-01
这篇文章主要介绍了php解析字符串里所有URL地址的方法,涉及php操作数组、字符串及URL的技巧,具有一定参考借鉴价值,需要的朋友可以参考下2015-04-04
这篇文章主要介绍了php简单实现sql防注入的方法,涉及addslashes函数的使用及正则过滤的相关技巧,非常简单实用,需要的朋友可以参考下2016-04-04
如何用 PHP 来获取客户端 IP 和 服务器(主机)的 IP 呢?需要的朋友可以参考下。2010-10-10
这篇文章主要介绍了PHP使用http_build_query()构造URL字符串的方法,结合实例形式较为详细的分析了http_build_query函数的功能,使用技巧与相关注意事项,需要的朋友可以参考下2016-04-04
这篇文章主要介绍了PHP 文件写入和读取操作,结合实例形式详细分析了PHP针对文件的打开、读取、写入及指针操作相关使用技巧,需要的朋友可以参考下2019-11-11
简单地写了一个PHP的图片上传,可以支持jpg、png、gif等格式的图片,如果你想支持更多的格式,比如bmp,可以自己扩充。不是面向对象的,在这里简单记录下,以便以后取用2011-11-11
本篇文章是对PHP实现多进程并行执行脚本进行了详细的分析介绍,需要的朋友参考下2013-06-06
在登录的时候记住用户输入的密码在某些情况下是很有必要的,下面是一个小例子,感兴趣的朋友可以参考下哈,希望对你有所帮助2013-05-05
这篇文章主要介绍了php中 ob_start等函数截取标准输出的方法的相关资料,需要的朋友可以参考下2015-06-06
最新评论