[Date Prev][Date Next][Thread Prev][Thread Next]
[Date Index]
[Thread Index]
- Subject: Newbie udp socket question
- From: Prabhu Gurumurthy <pgurumur@...>
- Date: Tue, 15 May 2007 17:55:18 -0700
Hello all,
I am a newbie to Lua and I was wondering whether somebody would give me
insight to the following:
1. I have trouble printing data returned from the UDP socket,
When I print the data returned from the socket, it prints it in all
ascii, I know I have to do a unpack like feature available in PERL or
struct feature in Python, I dont know what is the equivalent in Lua. Can
somebody point give me a cluestick?
2. Is there a getopt like feature that I can use in lua.
program (intention is to print ntp time from a server, in other words,
sntp client, without modifications):
#!/usr/bin/env lua
-- $Id: sntp.lua,v 1.1 2007/05/15 03:33:01 pgurumur Exp pgurumur $
ntp = {}
function ntp:Create(Server, Port)
local socket = require "socket"
local err = false
sockTable = {}
if Server then
sockTable._server = Server
end
if Port then
sockTable._port = Port
end
if not (sockTable._server and sockTable._port) then
error("need server and port defined")
end
assert(socket.dns.toip(sockTable._server))
sockTable._udpSocket = socket.udp()
sockTable._udpSocket:setpeername(sockTable._server, sockTable._port)
sockTable._udpSocket:settimeout(3)
end
function ntp:Send(Data)
local sent = 0
if Data then
sent, err = sockTable._udpSocket:send(Data)
if err then
error("send " ..err)
end
end
return sent
end
function ntp:Receive()
local datagram, err = sockTable._udpSocket:receive()
if not datagram then
error("receive: " ..err)
end
return datagram
end
function GetInitData()
data = string.format("%x", 0x23) .. string.rep("'\0'", 47)
return data
end
port = 123
if arg[2] then
port = arg[2]
end
if arg[1] then
local host = arg[1]
ntp:Create(host, port)
ntp:Send(GetInitData())
RetData = ntp:Receive()
Data = string.format("%s", RetData)
print(Data)
else
print(arg[0] .. " hostname")
end
Thanks a lot in advance for your help
Prabhu
-