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