码迷,mamicode.com
首页 > 其他好文 > 详细

luasocket系列: luasocket tcp

时间:2015-07-06 21:48:16      阅读:278      评论:0      收藏:0      [点我收藏+]

标签:luasocket   socket   luatcp   lua网络编程   

 

 

luasocket  拓展库提供了tcp 模块,该模块提供一些操作,非常简单.但是不知道为什么源代码中的例子有错误.

简单写了一个luasocket tcp 协议的例子,代码如下:

tcpsample.lua 代码:

--绑定地址和端口号
host = host or "127.0.0.1"
port = port or 8080
--创建tcp对象,方式和udp创建类似,通过metatable 设置类方法
tcp =socket.tcp()
--绑定地址和端口号到指定tcp对象上
e=tcp:bind(host, port)
if(e and e==1)then
   print("Binding to host '" ..host.. "' and port " ..port.. "...")
else
   print("bind err")  
end
i, p   = tcp:getsockname()
--监听绑定地址和端口号,排队设置为50
e =tcp:listen(50)
if(e and e ==1)then
   print("listen to host '" ..host.. "' and port " ..port.. "...")
else
   print("listen  err")
end
print("Waiting connection from talker on " .. i .. ":" .. p .. "...")
ctcp =nil
--等待一个客户端链接进来
while 1 do
   client = tcp:accept()
   print(client)
   if(client~=nil)then
      ctcp =client
      print("accept success")
      break
   else
      print("accept  err")
   end
end
--有客户端成功链接进来
print(ctcp)
while 1 do
    --阻塞,等待有至少10个字节进入
    revbuff=ctcp:receive(10)
	--向客户端发送数据
	ctcp:send("你好")
end


tcpsample.cpp代码如下:

extern "C" 
{
	#include <lua.h> 
	#include <lualib.h>
	#include <lauxlib.h>
	#include <luasocket.h>
}
//加入winsock库
#pragma comment(lib, "WS2_32")	// 链接到WS2_32.lib

int main( int argc, char *argv[] )
{
	lua_State* L = lua_open();

	luaopen_base(L);

	luaopen_socket_core(L);
	luaL_dofile(L, "tcpsample.lua");
	lua_close(L);
	return 0;
}


运行结果如下:

技术分享

 

代码非常简洁,接下来的例子,我们将深入luasocket 源代码部分. 尤其对luasocket select IO模式的讲解.对select IO 模型不熟悉的,赶快充电..渍渍渍渍....

版权声明:本文为博主原创文章,未经博主允许不得转载。

luasocket系列: luasocket tcp

标签:luasocket   socket   luatcp   lua网络编程   

原文地址:http://blog.csdn.net/sunning9001/article/details/46778325

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!