luasocket系列: luasocket tcp

原创 2015年07月06日 19:42:15

 

 

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 模型不熟悉的,赶快充电..渍渍渍渍....

Lua 服务器与客户端实例

 =============================================================== 服务器,main.lua =================...

lua socket最简单例子

lua socket最简单例子
  • CDAmber
  • CDAmber
  • 2016年08月30日 16:09
  • 2559

quick lua中使用SocketTCP

在quick中调用tcp连接的文章不是很多,我也搜了一下,就那么几篇。

使用Lua的扩展库LuaSocket用例

目录结构 LuaSocket 是 Lua 的网络模块库,它可以很方便地提供 TCP、UDP、DNS、FTP、HTTP、SMTP、MIME 等多种网络协议的访问操作。 它由两部分...

Tcp socket返回值 Connection timed out

关于errno值的定义在errno.h中 [cpp:nogutter] view plaincopy #ifndef _I386_ERRNO_H   #d...

TCP解决connect函数的超时问题

在一个TCP套接口被设置为非阻塞之后调用connect,connect会立即返回EINPROGRESS错误,表示连接操作正在进行中,但是仍未完成;同时TCP的三路握手操作继续进行;在这之后,我们可以调...

luasocket系列: luasocket hello world!

LuaSocket 是一个Lua的拓展库。包括两个部分:C语言编写提供Tcp和Udp 传输层协议的核心模块和支持处理网络Lua模块。 核心模块被高效且简单的是实现。仅仅要嵌入lua解释器就可以使用。核...

Lua的协同程序

协同程序(coroutine)与多线程情况下的线程比较类似:有自己的堆栈,自己的局部变量,有自己的指令指针(IP,instruction pointer),但与其它协同程序共享全局变量等很多信息。线程...

socket编程—select方法使用

0.背景 最近要写一个RPC库,即在客户端向服务端发送请求,服务器计算并返回结果,要求实现服务端能同时接收多个客户端请求但是不能使用线程库,根据提示我知道了可以使用select函数来完成非阻塞方式工...

lua socket

LuaSocket 是 Lua 的网络模块库,它可以很方便地提供 TCP、UDP、DNS、FTP、HTTP、SMTP、MIME 等多种网络协议的访问操作。它由两部分组成:一部分是用 C 写的...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:luasocket系列: luasocket tcp
举报原因:
原因补充:

(最多只允许输入30个字)