|  | #!/usr/bin/env python | 
|  | from __future__ import absolute_import, division, print_function | 
|  | import sys | 
|  | from socket import * | 
|  | from time import strftime | 
|  | import datetime | 
|  |  | 
|  | def main(): | 
|  | if len(sys.argv) < 4: | 
|  | print("completion_logger_server.py <listen address> <listen port> <log file>") | 
|  | exit(1) | 
|  |  | 
|  | host = sys.argv[1] | 
|  | port = int(sys.argv[2]) | 
|  | buf = 1024 * 8 | 
|  | addr = (host,port) | 
|  |  | 
|  | # Create socket and bind to address | 
|  | UDPSock = socket(AF_INET,SOCK_DGRAM) | 
|  | UDPSock.bind(addr) | 
|  |  | 
|  | print("Listing on {0}:{1} and logging to '{2}'".format(host, port, sys.argv[3])) | 
|  |  | 
|  | # Open the logging file. | 
|  | f = open(sys.argv[3], "a") | 
|  |  | 
|  | # Receive messages | 
|  | while 1: | 
|  | data,addr = UDPSock.recvfrom(buf) | 
|  | if not data: | 
|  | break | 
|  | else: | 
|  | f.write("{ "); | 
|  | f.write("\"time\": \"{0}\"".format(datetime.datetime.utcnow().strftime('%Y-%m-%d %H:%M:%S'))) | 
|  | f.write(", \"sender\": \"{0}\" ".format(addr[0])) | 
|  | f.write(", \"data\": ") | 
|  | f.write(data) | 
|  | f.write(" }\n") | 
|  | f.flush() | 
|  |  | 
|  | # Close socket | 
|  | UDPSock.close() | 
|  |  | 
|  | if __name__ == '__main__': | 
|  | main() |