aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authormarcus2011-05-09 22:07:23 +0000
committermarcus2011-05-09 22:07:23 +0000
commitff60d3e1393bd9da97f0ddc6043c497a222e2f40 (patch)
tree89ac13f0621718b43bd2f10b02c765ecc1e02d81
parentd05a378100ce03b998160e5895ec35faade50ea2 (diff)
Little bit of tweaking to nxt_server script and ipsock backend.
-rw-r--r--nxt/ipsock.py6
-rw-r--r--scripts/nxt_server.py23
2 files changed, 20 insertions, 9 deletions
diff --git a/nxt/ipsock.py b/nxt/ipsock.py
index 004566d..587937b 100644
--- a/nxt/ipsock.py
+++ b/nxt/ipsock.py
@@ -17,7 +17,6 @@ import socket
from nxt.brick import Brick
class IpSock(object):
-
def __init__(self, host, port):
self.host = host
self.port = port
@@ -27,11 +26,16 @@ class IpSock(object):
def __str__(self):
return 'Server (%s)' % self.host
+ def __del__(self):
+ if self.sock:
+ self.close()
+
def connect(self):
if self.debug:
print 'Connecting via Server...'
sock = socket.socket (socket.AF_INET, socket.SOCK_STREAM)
sock.connect((self.host, self.port))
+ #TODO: sasl authentication here?
self.sock = sock
if self.debug:
print 'Connected.'
diff --git a/scripts/nxt_server.py b/scripts/nxt_server.py
index 49eabf2..60639ff 100644
--- a/scripts/nxt_server.py
+++ b/scripts/nxt_server.py
@@ -16,9 +16,8 @@
# GNU General Public License for more details.
import nxt
-import socket
+import socket, sys, traceback
from nxt.utils import parse_command_line_arguments
-import sys
def serve(brick, channel, details):
'handles serving the client'
@@ -27,6 +26,8 @@ def serve(brick, channel, details):
try:
while run:
data = channel.recv(1024)
+ if not data:
+ break
code = data[0]
if code == '\x00' or code == '\x01' or code == '\x02':
brick.sock.send(data)
@@ -38,24 +39,30 @@ def serve(brick, channel, details):
channel.send(brick.sock.type)
elif code == '\x99':
run = False
- channel.close()
except:
+ traceback.print_exc()
+ finally:
channel.close()
+ print "Connection Finished"
if __name__ == "__main__":
arguments, keyword_arguments = parse_command_line_arguments(sys.argv)
if '--help' in arguments:
- print """nxt_server -- command server for NXT brick
+ print(
+"""nxt_server -- command server for NXT brick
Usage: nxt_server.py [--host <macaddress>][--name <name>]
-[--iphost <server ip>][--ipport <server port>]"""
+[--iphost <server ip>][--ipport <server port>]""")
+ exit(0)
print "Connecting to NXT..."
brick = nxt.find_one_brick(keyword_arguments.get('host',None),keyword_arguments.get('name',None))
print "Brick found."
+
print "Starting server..."
- server = socket.socket (socket.AF_INET, socket.SOCK_STREAM)
- server.bind ((keyword_arguments.get('iphost',''), int(keyword_arguments.get('ipport','2727'))))
- server.listen (1)
+ server = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
+ server.bind((keyword_arguments.get('iphost',''), int(keyword_arguments.get('ipport','2727'))))
+ server.listen(1)
# Have the server serve "forever":
while True:
channel, details = server.accept()
+ #TODO: sasl authentication here?
serve(brick, channel, details)