网页实现音乐服务器,演示一个简单WEB服务器,网页的文字图形音乐都能展示的目标基本实现。...

/*

演示一个简单WEB服务器,网页的文字图形音乐都能展示的目标基本实现。

未来目标:1、完善路由函数

2、实现GET POST数据上传

3、数据能实现sqlite3存储

*/

// 导入调试库、线程库、simpleHttpServer库、网卡库

import console;

import process;

import wsock.tcp.simpleHttpServer;

import inet.adapter;

// 确定本机IP 用于服务器绑定IP

for adptInfo in inet.adapter.each() {

if ( string.match(adptInfo.description ,"本地连接")){

webIp = adptInfo.currentIpAddress;

break ;

}elseif( string.match(adptInfo.description ,"无线网络连接") ){

webIp = adptInfo.currentIpAddress;

break ;

}

}

//启动 ip为webIp,端口为80的服务器线程。

var srvHttp = wsock.tcp.simpleHttpServer( webIp ,80);

//cmd模式显示 url连接 ,WIN系统调出默认浏览器测试网页情况效果。

console.log(srvHttp.getUrl());

process.execute(srvHttp.getUrl());

//服务器响应后各种处理步骤,放在匿名函数function(response,request)内。

srvHttp.run(

function(response,request){

//导入输入输出库、字符串操作库、url解析库

import io;

import string;

import inet.url;

import console;

/*

设计路由函数:

参数:url

返回:目标路径、目标文件类型、错误标记、错误页面

*/

var UrlRouter =function(url){

var errorFlag = false;

//计算目标路径

var sfile = url;

if( sfile == "/" || sfile ="/main.aardio"){

sfile = "d:\web\index.html";

}else{

sfile = "d:\web" + string.replace(sfile,"/","");

}

//计算目标文件类型

var ctType ="";

if(string.match(sfile,".")){}else{sfile = sfile+".*"};

ext = string.split( sfile,'.')[2];

select(ext) {

case "html" { ctType ="text/html"; }

case "htm"  { ctType ="text/html"; }

case "xml"  { ctType ="text/xml";  }

case "js"   { ctType ="application/x-javascript";}

case "css"  { ctType ="text/css";}

case "txt"  { ctType ="text/plain";}

case "jpg"  { ctType ="image/jpeg";}

case "png"  { ctType ="image/image/png";}

case "gif"  { ctType ="image/image/gif";}

case "ico"  { ctType ="image/image/x-icon";}

case "bmp"  { ctType = "application/x-bmp";}

case "*"  { ctType ="application/octet-stream";}

else {

ctType ="application/octet-stream";

}

}

//目标文件不存在404处理

var fullpath = io.exist( sfile );

if( ! fullpath ){

var page404 = /*

404错误 - HTTP made by Aardio

"don't busy on trying, maybe you just took a wrong way of opening."
        -- kindly tip from 404

*/

errorFlag = true;

errhtml = page404;

}

return sfile, ctType, errorFlag, errhtml;

};

/*

服务器响应后各种处理步骤:

第一步,通过获取到的 请求响应request对象的url属性,分解出url中的path。

第二步,将path传去路由函数,为了获取 目标路径、目标文件类型、错误标记、错误页面 等结果。

第三步,依据路由函数返回的结果。

回复对象的contentType属性设置为路由函数返回的目标文件类型。

回复对象的传送数据:错真就传错误页面,错假就传目标文件的二进制数据 。

回复对象的其他属性按simpleHttpServer内置默认的。

*/

var url = request.url ;

var urlArray = inet.url.split( url );

var urlPath = urlArray.path;

console.log(urlPath);

var sfile, ctType, err, errdate = UrlRouter(urlPath);

if(err){

response.writeBuffer( errdate ,string.len(errdate));

}else {

var file = io.open(sfile,"rb");

while(

var buf;

buf,readSize = file.read(1024);

buf

){

response.contentType = ctType;

response.writeBuffer(buf,readSize) ;

}

file.close();

}

response.close();

})

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
软件介绍 快手AAuto Quicker更名为aardio。aardio是专用于桌面软件快速开发的新一代混合型编程语言, 兼具动态、静态语言优势,语法更可兼容大部分流行语言,学习成本低,开发速度快,并永久免费。 一键发布为绿色软件。生成独立EXE执行文件。唯一能同时支持动态类型、静态类型开发的语言。兼容流行C系语法、Pascal语法,学习成本最低。可内嵌C语言、汇编、Java、PHP、Javascript、VBS.支持面向对象、Ducking Type、支持中文编程。支持COM动态、静态接口、支持标准DLL组件。标准库全部开源、全部使用AAuto代码编写。提供可视化开发环境,支持多线程开发。支持用网页开发软件界面、可与HTML、JS无缝整合。完美支持web自动化、轻松开发网站机器人。完美支持所有游戏辅助工具技术。 一句代码即可实现CALL外部EXE函数。支持内存读写、抓包、鼠标、按键模拟、监控。 自aardio10开始,aardio已支持网站开发、FastCGI服务端开发,使用 wsock.tcp.simpleHttpServer 甚至只需要一句代码就可以创建一个微型嵌入式HTTP服务端(可以结合浏览器组件方便的用于桌面软件的Web界面开发),aardio语法可直接支持与PHP类似的HTML模板语法,提供语言级别的模板解析,一个aardio源码文件,可以放aardio源码,也可以直接放html,或者放html,aardio混合的模板代码,aardio都能完美支持。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值