麻辣堂|资源主站|开发论坛|在线手册
首页 Apache Linux Java MySQL 注册帮助 
PHP项目开发组是PHP开发资源网于2007组年建成立的项目开发团队,目前核心开发成员有27人, 项目协作成员8名.下设7个开发组,主要承接大/中型网站项目开发任务。

    由于开发任务较多,人员比较紧张,现面向社会招聘全职或者兼职开发人员,不管你是在校大学生,还是全职开发人员,以及SOHO都可以联系本站,我们可以长期合作,并为您带来丰厚的报酬。
  您现在的位置:PHP开发资源网 > 麻辣堂 > 详细资料
待解决
使用fsockoepn()模拟telnet连接上BBS[转]
悬赏分:20 - 2007年08月18日

在 chinaunix php 版上讨论时碰到的, 这只是一个很简单的例子, 有心人可以比较试试.

测试地址: http://bbs.twomice.net/telnet.php
[PHP]
<?php
@set_time_limit(0);
//
// 这只是一个很简单的例子,提供的是思路;主要还得自己参考资料编写
//
$sock = fsockopen("bbs.twomice.net", 23, &$errno, &$error, 10);
if (!$sock) exit("fail to connect($error).");
socket_set_timeout($sock, 1);
stream_set_blocking ($sock, FALSE);

// 这是转换 unix 颜色的函数 (以前写的,效果一般)
@require ("inc/ansi2css.inc.php");
// 输入设定
for ($i = 0; $i < 300; $i++) echo " ";
echo "\n";
flush();

// 自己设定停止的触发条件,我这里写的是超过 30秒就关闭连接了
$maxtime = 300;
$start_time = time();

while (true) {
if (feof($sock)) {
echo "FEOF(socket)\n";
fclose($sock);
break;
}

$buf = "";
$buf = fgets($sock, 256);

if (strlen($buf) > 0) {

// guest
if (strstr($buf, "请输入代号:")) fputs($sock, "guest\n");
elseif (strstr($buf, "请按任意键继续")) fputs($sock, "\n");
elseif (strstr($buf, "请按 Y 键继续")) fputs($sock, "y\n");

// 换行还原
$buf = preg_replace("/3\[[0-9;]+H/is", "\n", $buf);

// 读到的资料处理
if (function_exists("ansi2css")) {
$buf = ansi2css($buf);
}
else {
$buf = preg_replace("/3\[[0-9;]*(m|J)/is", "", $buf);
$buf = str_replace("\r", "", $buf);
$buf = nl2br($buf);
}

echo $buf;
flush();
}

// 检查是否满足终止条件
if (time() - $start_time > $maxtime) {
echo "broken normally\n";
break;
}

// 要是用户自己按下了 STOP 键
if (connection_status()) {
echo "broken by connection_status()\n";
break;
}
}

@fclose($sock);
?>
[/PHP]
原文地址:http://www.sou5.cn/sou5/showArt.php?id=3571

提问者:xiaodou   08-18 11:11
答复
路过。。。顺便帮顶:)
回答者:玉米づ冰冻可乐 - 瓦岗村民 8-22 09:10
我也来回答:
不管你有没有帮助我们,瓦岗寨8万村民将感谢你。。。。。

为防止灌水,您需要计算一道数学题: 答案:
6 + 95 = ? 请将计算结果填在上面

 
[]
©2007 PhpRes.COM