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
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
|
#!/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()
|
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
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
|
#!/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,
trace
back,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()
|
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
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
|
#!/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,
trace
back,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()
|
本文转自 swq499809608 51CTO博客,原文链接:http://blog.51cto.com/swq499809608/1332062