Hello James,
Thanks for your response.
But I cannot use a third party software, I need to use the exisiting API's
within python.
As I am new to python, I suspected that I should go by a simpler approach
and so
scrapped off the below code and wrote a very simple UDP server code as
follows:
logFileName = '/home/msat/gsc/logs/' + compNum + '/logparsertracedump.log'
logfile = open(logFileName, "w")
from socket import *
host = "121.3.0.1"
port = PORT
buf = 4096
addr = (host,port)
# Create socket and bind to address
UDPSock = socket(AF_INET,SOCK_DGRAM)
UDPSock.setsockopt(SOL_SOCKET, SO_RCVBUF, 8388608)
UDPSock.bind(addr)
while 1:
data,addr = UDPSock.recvfrom(buf)
if not fileExists(logFileName):
logfile = open(logFileName, "a")
logfile.writelines(data)
# Close socket
UDPSock.close()
Even this seems to lose packets, I would really appreciate if any pointers
can be provided to improve my code.
Thanks,
Sam
On Wed, Nov 5, 2008 at 7:46 PM, James Mills <[EMAIL PROTECTED]>wrote:
> On Thu, Nov 6, 2008 at 9:53 AM, <[EMAIL PROTECTED]> wrote:
> > logFileName = 'log.txt'
> >logfile = open(logFileName, "a")
> >class MyUDPServer(SocketServer.UDPServer):
> >def server_bind(self):
> >self.socket.setsockopt(socket.SOL_SOCKET,
> > socket.SO_RCVBUF, 8388608)
> >self.socket.bind(self.server_address)
> >
> >class LogsDumpHandler(SocketServer.DatagramRequestHandler):
> >def handle(self):
> >global logfile
> > # fileExists is a function which checks the existence of a file
> >if not fileExists(logFileName):
> >logfile = open(logFileName, "a")
> >logfile.writelines(self.rfile.readlines())
> >
> >server = MyUDPServer(("",PORT), LogsDumpHandler)
> >server.serve_forever()
> >logfile.close()
>
> This is horrible code :/
>
> Try these instead:
> * UDPServer ->
> http://trac.softcircuit.com.au/circuits/browser/examples/udpserver.py
> * UDPClient ->
> http://trac.softcircuit.com.au/circuits/browser/examples/udpclient.py
>
> Example usage
> --
>
> ~/circuits/examples
> $ ./udpserver.py
> 127.0.0.1, 9000:
> test
> 127.0.0.1, 9000:
> hi
>
> ~/circuits/examples
> $ ./udpclient.py -b 127.0.0.1:9000 127.0.0.1:8000
> test
> 127.0.0.1, 8000:
> test
> hi
> 127.0.0.1, 8000:
> hi
>
> You can download circuits from http://trac.softcircuit.com.au/circuits/
> or get the latest development version by using Mercurial (1):
> hg clone http://hg.softcircuit.com.au/projects/circuits/
>
> cheers
> James
>
> [1] http://www.selenic.com/mercurial/wiki/
>
> --
> --
> -- "Problems are solved by method"
>
--
http://mail.python.org/mailman/listinfo/python-list