cinvoke-svn
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[cinvoke-svn] r113 - trunk/cinvoke/bindings/lua


From: will
Subject: [cinvoke-svn] r113 - trunk/cinvoke/bindings/lua
Date: 25 Oct 2006 14:34:40 -0400

Author: will
Date: 2006-10-25 14:34:39 -0400 (Wed, 25 Oct 2006)
New Revision: 113

Added:
   trunk/cinvoke/bindings/lua/socket.lua
Log:
socket example


Added: trunk/cinvoke/bindings/lua/socket.lua
===================================================================
--- trunk/cinvoke/bindings/lua/socket.lua                               (rev 0)
+++ trunk/cinvoke/bindings/lua/socket.lua       2006-10-25 18:34:39 UTC (rev 
113)
@@ -0,0 +1,45 @@
+require("cinvoke_lua")
+
+libc = clibrary.new("libc.so.6")
+
+sockaddr_in = cstructure.new(
+       Cshort, "sin_family",
+       Cshort, "sin_port",
+       Cint, "in_addr",
+       Cint64, "sin_zero")
+
+sock = libc:get_function(Cint , "socket", Cint, Cint, Cint)
+lstn = libc:get_function(Cint,"listen", Cint, Cint)
+bnd = libc:get_function(Cint, "bind", Cint, cinv.array(sockaddr_in), Cint)
+acpt = libc:get_function(Cint, "accept", Cint, cinv.array(sockaddr_in), 
cinv.array(Cint))
+inet_ntoa = libc:get_function(Cstring, "inet_ntoa", Cint)
+close = libc:get_function(Cint, "close", Cint)
+
+PORT = 47115 -- 3000 in reverse byte order
+
+nsock = sock(2, 1, 0)
+myaddr = {
+       sin_family = 2,
+       sin_port = PORT,
+       in_addr = 0,
+       sin_zero = 0
+}
+
+bnd(nsock, { myaddr }, 16)
+lstn(nsock, 10)
+print ("Listening...")
+while 1 do
+       claddr = {}
+       claddr[1] = {
+               sin_family = 0,
+               sin_port = 0,
+               in_addr = 0,
+               sin_zero = 0
+       }
+       len = 16
+       clsock = acpt(nsock, claddr, {len})
+       
+       print("Got a connection from " .. inet_ntoa(claddr[1].in_addr))
+       
+       close(clsock)
+end





reply via email to

[Prev in Thread] Current Thread [Next in Thread]