<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          cppsCPPS是一種輕量級的嵌入式腳本語言,其語法類似于C++。

          聯(lián)合創(chuàng)作 · 2023-09-27 23:15

          cpps script

          歡迎

          CPPS 是一個功能強大,運行速度快,容易上手的解釋型腳本語言,非常容易學(xué)習(xí)和使用,并且可以很容易的嵌入到C++項目中。

          CPPS 被設(shè)計的初衷是讓那些和作者一樣不喜歡LUA,PY,等等腳本語法的開發(fā)者使用,它可以對接各種項目,無論游戲,WEB,或者是人工智能方面。

          它的語法極為像C++,所以C++開發(fā)者可以很快速的上手,無需太深入的學(xué)習(xí)它。

          招募協(xié)同軟件作者,三方模塊作者.

          下載與編譯

          CPPS 的下載與安裝非常簡單,CPPS不依賴于任何第三方庫,僅僅下載就可以編譯。

          LINUX & MACOS

          git clone https://github.com/johnsonyl/cpps.git
          
          cmake .
          
          make
          
          make install
          
          ;根據(jù)需要是否編譯擴展模塊.
          cpps buildlibs
          

          Windows

          git clone https://github.com/johnsonyl/cpps.git
          
          cmake .
          
          使用Visual Studio打開libcpps.sln進行編譯即可。
          
          cd libs
          
          ;根據(jù)需要是否編譯擴展模塊.
          
          cmake .
          
          使用Visual Studio打開cppslibs.sln進行編譯即可。
          

          是不是非常簡單?

          libs 文件夾是內(nèi)部擴展模塊.具體編譯規(guī)則請查看文檔

          腳本文檔在

          http://docs.cppscript.org

          Example:

          Hello World:

          println("hello world");

          base64:

          #import "base64"
          
          
          var s = "abc";
          println("source:{s}");
          var encode_s = base64.encode(s);
          println("encode_s:{encode_s}");
          var deocde_s = base64.decode(encode_s);
          println("deocde_s:{deocde_s}");

          asyncio:

          async var test()
          {
          	println("do test function");
          	await asyncio.wait_for(asyncio.sleep(2000),100);
          	println("do test function done");
          	return "test";
          
          }
          async var test1()
          {
          	println("do test1 function");
          	await asyncio.sleep(1000);
          	println("do test1 function done");
          	
          	return "test1";
          }
          var test_call_back(var task, var context)
          {
          	println(task.get_name());
          	println(context);
          }
          
          async var main() {
          
          	var task1 = asyncio.create_task(test());
          	task1.set_name("Custom names are used to distinguish");
          	task1.add_done_callback(test_call_back, "Custom context content");
          	var task2 = asyncio.create_task(test1());
          
          	var ret = await asyncio.wait(task1);
          	if (ret.timeout())
          	{
          		println("task1 was timeouted.");
          	}
          	println("state:{ret.state()}");
          	println(ret.result());
          	try {
          		println(await task2);
          	}
          	catch (var e)
          	{
          		println("oh,we catch some error");
          		println("{e.what()} line:{e.line()} file:{e.file()}");
          		println(e.callstack());
          	}
          
          	println("finish");
          }
          
          asyncio.run(main());
          

          socket - server:

          system("chcp 65001"); //use utf8 string
          
          #import "socket"
          
          
          
          
          //server
          var socket_accept(var socketIndex)
          {
          	println("acceptd:{socketIndex}");
          }
          var socket_data(var socketIndex,var buffer) 
          {
          	var packageSize = buffer.readInt32();
          
          	var s = buffer.readString(packageSize-4);
          	println(s);
          
          	if(s == "e")
          	{
          		srv.closesocket(socketIndex);
          	}
          	
          	var writer = new Buffer();
          	writer.writeString(s);
          	socket_send(socketIndex, writer);
          }
          var socket_close(var socketIndex,var err,var errstr) 
          {
          	println("closed :{socketIndex},err:{err},errstr:{errstr}");
          }
          var socket_parser(var headerbuffer)
          {
          	var size = headerbuffer.readInt32();
          	return size;
          }
          var socket_send(var socketIndex,var buffer)
          {
          	var writer = new Buffer();
          	writer.writeInt32(buffer.length() + 4);
          	writer.write(buffer,buffer.length());
          	srv.send(socketIndex, writer);
          }
          
          println("start server");
          
          
          var srv = new socket::server().setoption(new ServerOption(){
          							ip = "0.0.0.0",
          							headersize = 4,//header 4 bytes
          							accept = socket_accept,
          							data = socket_data,
          							close = socket_close,
          							parser = socket_parser
          							}).listen(4060);
          
          println("start over");
          while (true){
          	srv.run();
          	Sleep(1);
          }
          

          client:

          system("chcp 65001"); //use utf8 string
          
          #import "socket"
          
          
          //client
          var socket_connected()
          {
          	println("connected");
          
          	var writer = new Buffer();
          	writer.writeString("this is a pingpong msg");
          	socket_send(writer);
          }
          var socket_data(var buffer)
          {
          	var packageSize = buffer.readInt32();
          	var s = buffer.readString(packageSize-4);
          	println(s);
          
          	Sleep(100);
          
          	
          	var writer = new Buffer();
          	writer.writeString(s);
          	socket_send(writer);
          }
          var socket_close(var err,var errstr)
          {
          	println("closed:err:{err},errstr:{errstr}");
          }
          var socket_parser(var headerbuffer)
          {
          	var size = headerbuffer.readInt32();
          	return size;
          }
          var socket_send(var buffer)
          {
          	var writer = new Buffer();
          	var size = buffer.length();
          	writer.writeInt32(size + 4);
          	writer.write(buffer,buffer.length());
          	client.send(writer);
          }
          var client = new socket::client();
          client.setoption(new ClientOption(){
          							connected = socket_connected,
          							data = socket_data,
          							close = socket_close
          							headersize = 4,//header 4 bytes
          							parser = socket_parser
          							});
          
          var b = client.connect("127.0.0.1",4060);
          
          
          
          while (true)
          {
          		client.run();
          		Sleep(1);
          }

          httprequest:

          system("chcp 65001"); //use utf8 string
          
          #import "http"
          
          var request = new http::httprequest();
          request.setcookiefile("cookies.txt");
          //request.setproxy(httpproxy.SOCK5,"192.168.1.166:25455");
          //request.setproxyaccount("johnsonyl","mima");
          request.addheaders({User-Agent:"cppsrequest/1.1.0"});
          var ret = request.get("http://127.0.0.1:8080/Home/test?kkk=100");
          
          
          println("-------------------GET-------------------------");
          println("get:{ret}");
          var cookies = request.getcookies();
          println("cookies:{cookies}");
          
          var headers = request.getheaders();
          println("headers:{headers}");
          
          
          println("-------------------POST-------------------------");
          ret = request.post("http://127.0.0.1:8080/Home/test","kkk=100");
          println("post:{ret}");
          var cookies = request.getcookies();
          println("cookies:{cookies}");
          
          var headers = request.getheaders();
          println("headers:{headers}");
          println("-------------------END-------------------------");
          
          瀏覽 32
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          編輯 分享
          舉報
          評論
          圖片
          表情
          推薦
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          編輯 分享
          舉報
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  日韩高清无码不卡 | 天天摸日日摸狠狠添 | 久久免费小视频 | 视频一区 中文字幕 | 国产精品久久久久久久成人午夜 |