成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

一個開源Lua網(wǎng)絡(luò)庫

開發(fā) 開發(fā)工具
Lua是一個小巧的腳本語言。今天我們將介紹一下如何為KendyNet為lua提供一套網(wǎng)絡(luò)接口。

 以前曾經(jīng)寫過一篇為lua添加網(wǎng)絡(luò)功能的博客,當(dāng)然那篇文章提提供的lua網(wǎng)絡(luò)接口純粹是實驗玩玩的,沒有任何實用性.今天突然又想起了這件事,想用前段時間寫的KendyNet為lua提供一套網(wǎng)絡(luò)接口.

這套接口是單線程的,通過PeekMsg獲取網(wǎng)絡(luò)事件,PeekMsg會在底層驅(qū)動epoll主循環(huán).雖然也可以提供多線程的接口,在下面啟動一個線程來驅(qū)動epoll,將事件提交到消息隊列,由PeekMsg獲取。但是,沒人有會指望用lua寫一個高性能的網(wǎng)絡(luò)服務(wù)器,所以決定還是提供一個簡單的接口,用來寫寫簡單的小程序就可以了.

首先介紹一下向lua提供的接口:

  1. lua_register(lState,"Connect",&luaConnect);                               //連接到遠程服務(wù)器 
  2. lua_register(lState,"CloseConnection",&luaCloseConnection);    //銷毀連接 
  3. lua_register(lState,"CreateNet",&luaCreateNet);                         //創(chuàng)建網(wǎng)絡(luò)接口 
  4. lua_register(lState,"PeekMsg",&luaPeekMsg);                            //從消息隊列提取事件 
  5. lua_register(lState,"CreateWpacket",&luaCreateWpacket);        //創(chuàng)建一個寫包 
  6. lua_register(lState,"ReleaseRpacket",&luaReleaseRpacket);     //釋放一個讀包 
  7. lua_register(lState,"SendPacket",&luaSendPacket);                   //發(fā)送一個數(shù)據(jù)包 
  8. lua_register(lState,"PacketReadString",&luaPacketReadString);//從數(shù)據(jù)包中讀取字符串 

下面看一寫用這套接口編寫的echo服務(wù)器

  1. echo.lua 
  2.  
  3. local registernet = assert(package.loadlib("./luanet.so","RegisterNet"))   
  4. registernet() 
  5. function mainloop() 
  6.     local netengine = CreateNet("127.0.0.1",8012) 
  7.     while true do 
  8.         local type,connection,rpacket = PeekMsg(netengine,50) 
  9.         if type then 
  10.             if type == 1 then 
  11.                 print("a connection comming"
  12.             elseif type == 3 then 
  13.                 local wpkt = CreateWpacket(rpacket,0)  
  14.                 SendPacket(connection,wpkt) 
  15.                 local msg = PacketReadString(rpacket) 
  16.                 print(msg) 
  17.                 ReleaseRpacket(rpacket) 
  18.             elseif type == 2 then 
  19.                 print("disconnect"
  20.                 CloseConnection(connection) 
  21.             else 
  22.             end 
  23.         end 
  24.          
  25.     end     
  26. end     
  27.  
  28. mainloop()   

相當(dāng)簡單,首先是導(dǎo)入luanet.so動態(tài)庫,并調(diào)用網(wǎng)絡(luò)接口注冊函數(shù),然后在127.0.0.1的8012端口上創(chuàng)建一個網(wǎng)絡(luò)引擎.

然后循環(huán)調(diào)用PeekMsg獲取事件即可.

目前還有些小bug需要解決.

項目地址:https://github.com/sniperHW/luanet

要注意的是本項目依賴于kendylib,所以下載時請把kendylib也一起下載.

原文鏈接:http://www.cnblogs.com/sniperHW/archive/2012/07/29/2614308.html

【編輯推薦】

  1. 編程語言新寵兒:Julia誕生記
  2. 當(dāng)下主流JVM語言一覽
  3. Lua開發(fā)工具脫離Eclipse 成為獨立版本
  4. 菜鳥入門Java語言學(xué)習(xí)的要點
  5. 流行的編程語言之戰(zhàn)

責(zé)任編輯:彭凡 來源: 博客園
相關(guān)推薦

2024-05-28 07:06:44

2023-10-10 08:22:12

Tesseract庫開源

2013-08-09 09:49:19

開源怎么開源庫開源

2015-07-29 10:00:16

開源項目

2014-10-21 10:25:50

程序員

2022-09-28 13:57:41

鴻蒙開源

2013-09-10 09:54:50

2019-07-24 14:49:48

SQL開源庫BI軟件

2022-12-28 14:07:52

Gamerzilla開源游戲

2011-08-23 17:42:42

Lua腳本

2022-04-28 09:05:41

網(wǎng)絡(luò)爬蟲Python

2015-06-02 09:51:40

iOS網(wǎng)絡(luò)請求封裝接口

2015-06-02 10:24:43

iOS網(wǎng)絡(luò)請求降低耦合

2023-05-09 07:10:53

2023-12-21 11:12:31

Node.js.NET開源庫

2017-11-07 11:36:57

開源項目代碼

2021-03-02 14:50:57

開源技術(shù) 項目

2021-09-29 15:49:37

Exchange開源用戶開發(fā)者

2019-03-05 11:22:06

FinalCrypt開源文件加密

2020-11-15 18:20:44

GnuCash開源會計軟
點贊
收藏

51CTO技術(shù)棧公眾號

主站蜘蛛池模板: 日日夜夜操天天干 | av片在线观看 | 亚洲欧美激情精品一区二区 | 久久精品色欧美aⅴ一区二区 | 国产1区2区3区 | 美女福利视频一区 | 亚洲午夜视频在线观看 | 久久a久久| 天天干天天草 | 激情av在线 | 国产91视频免费 | 日本一区二区三区免费观看 | 黑人久久久 | 欧美一区二区视频 | 亚洲精品视频播放 | 日韩欧美国产综合 | 欧美在线一区二区三区四区 | 久久免费小视频 | 精品二区 | 美女天天操 | 久久久黄色 | 大乳boobs巨大吃奶挤奶 | www.中文字幕av | 精品国产鲁一鲁一区二区张丽 | 欧美精品一区二区在线观看 | 天天操夜夜操 | 91成人精品视频 | 中文字幕av在线播放 | av一区在线观看 | 国产传媒视频在线观看 | 欧美一区永久视频免费观看 | gav成人免费播放视频 | 亚洲三级在线 | 色综合久久天天综合网 | xx性欧美肥妇精品久久久久久 | a久久 | 神马久久av | 久久久久久国产免费视网址 | 午夜成人在线视频 | 国产精品久久久久久久久久免费看 | 最新中文字幕一区 |