summaryrefslogtreecommitdiffstats
path: root/For Weekly Test/Old/15-07-2011/classServer.py
diff options
context:
space:
mode:
Diffstat (limited to 'For Weekly Test/Old/15-07-2011/classServer.py')
-rw-r--r--For Weekly Test/Old/15-07-2011/classServer.py94
1 files changed, 94 insertions, 0 deletions
diff --git a/For Weekly Test/Old/15-07-2011/classServer.py b/For Weekly Test/Old/15-07-2011/classServer.py
new file mode 100644
index 0000000..97a398d
--- /dev/null
+++ b/For Weekly Test/Old/15-07-2011/classServer.py
@@ -0,0 +1,94 @@
+# Echo server program
+import socket
+import sys
+import os
+import string
+from time import sleep
+
+class ServerHandler:
+
+ def __init__(self,p):
+ self.port = p
+ self.host = None #symbolic name meaning all available interfaces
+ self.s = None
+ self.connected = 0
+ self.address = "127.0.0.1" #address of the main controller
+ self.onceConnected = 0
+ self.error = 'No error'
+
+ def openSocket(self):
+ self.error = 'No error'
+ for res in socket.getaddrinfo(self.host, self.port, socket.AF_UNSPEC,
+ socket.SOCK_STREAM, 0, socket.AI_PASSIVE):
+ af, socktype, proto, canonname, sa = res
+
+ try:
+ self.s = socket.socket(af, socktype, proto)
+ self.s.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1) #this resolves the bug with live packets
+ except socket.error, msg:
+ self.s = None
+ self.connected = 0
+ self.error = str(msg)
+ continue
+
+ try:
+ self.s.bind(sa)
+ self.s.listen(1)
+ except socket.error, msg:
+ self.s.close()
+ self.s = None
+ self.connected = 0
+ self.error = str(msg)
+ continue
+ break
+
+ if self.s is None:
+ self.connected = 0
+ return 0
+ else: #accept the connection
+ self.connection, self.address = self.s.accept()
+ self.connected = 1
+ self.onceConnected = 1
+ return 1
+
+ def connectedTo(self):
+ return self.address
+
+ def receiveData(self):
+ if self.connected == 1:
+ while 1:
+ data = self.connection.recv(64)
+ if not data:
+ return 'NO DATA'
+ else:
+ return data
+ else:
+ return 0
+
+ def sendData(self, data):
+ if self.connected == 1:
+ self.connection.send(data)
+ return 1
+ else:
+ return 0
+
+ def closeConnection(self):
+ if self.onceConnected == 1:
+ self.connection.close()
+ self.s.close()
+ self.s = None
+ self.connected == 0
+ return 1
+ else:
+ return 0
+
+ def killPort(self):
+ killResult = os.popen('lsof -i tcp:' + str(self.port) + ' | grep "python " | awk -F" " ' + "'{print $2}'").read()
+ killResult = killResult.replace('\n','')
+ print killResult
+ if killResult!='':
+ print killResult
+ killPort = os.popen("kill -9 " + killResult).read()
+ return 1
+ return 0
+