summaryrefslogtreecommitdiffstats
path: root/For Weekly Test/Old/15-07-2011/classServer.py
blob: 97a398dc7f38942dd75d441d56046c654949b835 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
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