socket service daemon
#!/usr/bin/env python
#-*-coding:UTF-8-*-
"""
@Item : Socket Daemon
@Author : william
@Group : DEV Group
@Date : 2013-10-16
@Funtion:
Getting kvm instances port
"""
import sys,os,time,redis,traceback,json,threading,socket
from hscloud.hsnovnc import utils
from hscloud import log
LOG = log.get_logger(__name__)
class MySocket(object):
def __init__(self, proto = 0):
if proto == 0:
self.sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
self.sock.setblocking(True)
else:
self.sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
self.sock.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
# The socket binding host and port
def my_bind(self, host, port):
try:
self.sock.bind((host, port))
except socket.error, e:
LOG.error(e)
return - 1
return 0
#listen TCP port ,default
def my_listen(self, num = 1024):
try:
self.sock.listen(num)
except socket.error, e:
LOG.error(e)
return - 1
return 0
#connect setting timeout
def my_connect(self, host, port, time_out = -1):
try:
if time_out == -1:
self.sock.setblocking(1)
else:
self.sock.settimeout(time_out)
self.sock.connect((host, port))
except socket.error, e:
LOG.error(e)
return - 1
return 0
#accept teturn client address
def my_accept(self, time_out = -1):
addr = []
try:
if time_out == -1:
self.sock.setblocking(1)
else:
self.sock.settimeout(time_out)
client_sock, addr = self.sock.accept()
except socket.error, e:
LOG.error(e)
return client_sock, addr
#recv setting timeout
def my_recv(self, buf_size, time_out = -1):
buf = ''
try:
if time_out == -1:
self.sock.setblocking(1)
else:
self.sock.settimeout(time_out)
buf = self.sock.recv(buf_size)
except Exception, e:
LOG.error(e)
return buf
#send setting timeout
def my_send(self, buf, time_out = -1):
try:
if time_out == -1:
self.sock.setblocking(1)
else:
self.sock.settimeout(time_out)
send_len = self.sock.send(buf)
return send_len
except Exception, e:
LOG.error(e)
return - 1
#close
def my_close(self, time_out = -1):
try:
if time_out == -1:
self.sock.setblocking(1)
else:
self.sock.settimeout(time_out)
self.sock.close()
except socket.error, e:
LOG.error(e)
return - 1
return 0
class sock_thread(threading.Thread):
def __init__(self, host, port,buf):
threading.Thread.__init__(self)
self.host = host
self.port = port
self.buf = buf
def run(self):
sock = MySocket()
sock.my_bind(self.host, self.port)
sock.my_listen(20)
LOG.info('The socket has been connected')
while True:
conn, addr = sock.my_accept()
while True:
data = conn.recv(self.buf)
if not data:
break
else:
try:
data = json.loads(data)
if data['Node']['UUID']:
port = utils.get_vnc_port(data['Node'].get('UUID',None))
data['Node']['port'] = port
LOG.info(json.dumps(data))
conn.send(json.dumps(data))
else:
conn.send()
except:
break
conn.close()
sock.my_close()
class socket_demo(object):
def __init__(self):
host = utils.get_net_ip()
self.host = host
self.port = 10086
self.buf = 4096
def work(self):
self.sock = sock_thread(self.host, self.port,self.buf)
self.sock.start()
time.sleep(0.5)
def init():
st = socket_demo()
st.work()
#!/usr/bin/env python
#-*-coding:UTF-8-*-
"""
@Item : Socket Daemon
@Author : william
@Group : DEV Group
@Date : 2013-10-16
@Funtion:
Getting kvm instances port
"""
import sys,os,time,redis,traceback,json,threading,socket
LOG = log.get_logger(__name__)
class MySocket(object):
def __init__(self, proto = 0):
if proto == 0:
self.sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
self.sock.setblocking(True)
else:
self.sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
self.sock.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
# The socket binding host and port
def my_bind(self, host, port):
try:
self.sock.bind((host, port))
except socket.error, e:
LOG.error(e)
return - 1
return 0
#listen TCP port ,default
def my_listen(self, num = 1024):
try:
self.sock.listen(num)
except socket.error, e:
LOG.error(e)
return - 1
return 0
#connect setting timeout
def my_connect(self, host, port, time_out = -1):
try:
if time_out == -1:
self.sock.setblocking(1)
else:
self.sock.settimeout(time_out)
self.sock.connect((host, port))
except socket.error, e:
LOG.error(e)
return - 1
return 0
#accept teturn client address
def my_accept(self, time_out = -1):
addr = []
try:
if time_out == -1:
self.sock.setblocking(1)
else:
self.sock.settimeout(time_out)
client_sock, addr = self.sock.accept()
except socket.error, e:
LOG.error(e)
return client_sock, addr
#recv setting timeout
def my_recv(self, buf_size, time_out = -1):
buf = ''
try:
if time_out == -1:
self.sock.setblocking(1)
else:
self.sock.settimeout(time_out)
buf = self.sock.recv(buf_size)
except Exception, e:
LOG.error(e)
return buf
#send setting timeout
def my_send(self, buf, time_out = -1):
try:
if time_out == -1:
self.sock.setblocking(1)
else:
self.sock.settimeout(time_out)
send_len = self.sock.send(buf)
return send_len
except Exception, e:
LOG.error(e)
return - 1
#close
def my_close(self, time_out = -1):
try:
if time_out == -1:
self.sock.setblocking(1)
else:
self.sock.settimeout(time_out)
self.sock.close()
except socket.error, e:
LOG.error(e)
return - 1
return 0
class sock_thread(threading.Thread):
def __init__(self, host, port,buf):
threading.Thread.__init__(self)
self.host = host
self.port = port
self.buf = buf
def run(self):
sock = MySocket()
sock.my_bind(self.host, self.port)
sock.my_listen(20)
LOG.info('The socket has been connected')
while True:
conn, addr = sock.my_accept()
while True:
data = conn.recv(self.buf)
if not data:
break
else:
try:
data = json.loads(data)
if data['Node']['UUID']:
port = utils.get_vnc_port(data['Node'].get('UUID',None))
data['Node']['port'] = port
LOG.info(json.dumps(data))
conn.send(json.dumps(data))
else:
conn.send()
except:
break
conn.close()
sock.my_close()
class socket_demo(object):
def __init__(self):
host = utils.get_net_ip()
self.host = host
self.port = 10086
self.buf = 4096
def work(self):
self.sock = sock_thread(self.host, self.port,self.buf)
self.sock.start()
time.sleep(0.5)
def init():
st = socket_demo()
st.work()
#!/usr/bin/env python
#-*-coding:UTF-8-*-
"""
@Item : Socket Daemon
@Author : william
@Group : DEV Group
@Date : 2013-10-16
@Funtion:
Getting kvm instances port
"""
import sys,os,time,redis,traceback,json,threading,socket
LOG = log.get_logger(__name__)
class MySocket(object):
def __init__(self, proto = 0):
if proto == 0:
self.sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
self.sock.setblocking(True)
else:
self.sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
self.sock.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
# The socket binding host and port
def my_bind(self, host, port):
try:
self.sock.bind((host, port))
except socket.error, e:
LOG.error(e)
return - 1
return 0
#listen TCP port ,default
def my_listen(self, num = 1024):
try:
self.sock.listen(num)
except socket.error, e:
LOG.error(e)
return - 1
return 0
#connect setting timeout
def my_connect(self, host, port, time_out = -1):
try:
if time_out == -1:
self.sock.setblocking(1)
else:
self.sock.settimeout(time_out)
self.sock.connect((host, port))
except socket.error, e:
LOG.error(e)
return - 1
return 0
#accept teturn client address
def my_accept(self, time_out = -1):
addr = []
try:
if time_out == -1:
self.sock.setblocking(1)
else:
self.sock.settimeout(time_out)
client_sock, addr = self.sock.accept()
except socket.error, e:
LOG.error(e)
return client_sock, addr
#recv setting timeout
def my_recv(self, buf_size, time_out = -1):
buf = ''
try:
if time_out == -1:
self.sock.setblocking(1)
else:
self.sock.settimeout(time_out)
buf = self.sock.recv(buf_size)
except Exception, e:
LOG.error(e)
return buf
#send setting timeout
def my_send(self, buf, time_out = -1):
try:
if time_out == -1:
self.sock.setblocking(1)
else:
self.sock.settimeout(time_out)
send_len = self.sock.send(buf)
return send_len
except Exception, e:
LOG.error(e)
return - 1
#close
def my_close(self, time_out = -1):
try:
if time_out == -1:
self.sock.setblocking(1)
else:
self.sock.settimeout(time_out)
self.sock.close()
except socket.error, e:
LOG.error(e)
return - 1
return 0
class sock_thread(threading.Thread):
def __init__(self, host, port,buf):
threading.Thread.__init__(self)
self.host = host
self.port = port
self.buf = buf
def run(self):
sock = MySocket()
sock.my_bind(self.host, self.port)
sock.my_listen(20)
LOG.info('The socket has been connected')
while True:
conn, addr = sock.my_accept()
while True:
data = conn.recv(self.buf)
if not data:
break
else:
try:
data = json.loads(data)
if data['Node']['UUID']:
port = utils.get_vnc_port(data['Node'].get('UUID',None))
data['Node']['port'] = port
LOG.info(json.dumps(data))
conn.send(json.dumps(data))
else:
conn.send()
except:
break
conn.close()
sock.my_close()
class socket_demo(object):
def __init__(self):
host = utils.get_net_ip()
self.host = host
self.port = 10086
self.buf = 4096
def work(self):
self.sock = sock_thread(self.host, self.port,self.buf)
self.sock.start()
time.sleep(0.5)
def init():
st = socket_demo()
st.work()
本文は“評論を歓迎して、称賛を歓迎します”のブログから出て、転載して作者と連絡してください!