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

一個開源Lua網絡庫

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

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

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

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

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

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

  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()   

相當簡單,首先是導入luanet.so動態庫,并調用網絡接口注冊函數,然后在127.0.0.1的8012端口上創建一個網絡引擎.

然后循環調用PeekMsg獲取事件即可.

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

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

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

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

【編輯推薦】

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

責任編輯:彭凡 來源: 博客園
相關推薦

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

網絡爬蟲Python

2015-06-02 10:24:43

iOS網絡請求降低耦合

2015-06-02 09:51:40

iOS網絡請求封裝接口

2023-12-21 11:12:31

Node.js.NET開源庫

2023-05-09 07:10:53

2017-11-07 11:36:57

開源項目代碼

2021-03-02 14:50:57

開源技術 項目

2021-09-29 15:49:37

Exchange開源用戶開發者

2020-11-15 18:20:44

GnuCash開源會計軟

2019-03-05 11:22:06

FinalCrypt開源文件加密
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 好姑娘影视在线观看高清 | 精品久久一区 | 在线婷婷| 国产熟熟| 久久久久免费精品国产小说色大师 | av毛片| 亚洲巨乳自拍在线视频 | av在线一区二区 | 天天操天天射天天舔 | 久久精品一区二区三区四区 | 国产三级精品三级在线观看四季网 | 免费a级毛片在线播放 | 国产精品一区久久久 | 日韩三级精品 | 国产一级片 | 日本一区二区电影 | 欧美日韩国产中文 | 国产综合视频 | 超碰97人人人人人蜜桃 | 伊人国产精品 | 黄色大片在线播放 | 婷婷国产一区二区三区 | 成人午夜精品 | 黄色男女网站 | 波多野结衣在线观看一区二区三区 | 全免一级毛片 | 羞羞免费网站 | 午夜无码国产理论在线 | 99在线免费视频 | 一区二区三区在线免费观看 | 成人激情视频在线观看 | 久久亚洲一区二区三区四区 | 视频一区二区在线观看 | 欧美成人h版在线观看 | 亚洲视频一区二区三区 | 亚洲欧美激情网 | 中文字幕日韩欧美一区二区三区 | 日本精品视频在线观看 | 91成人精品 | 欧美一区二区视频 | 日韩欧美在线播放 |