-
Notifications
You must be signed in to change notification settings - Fork 1
/
wsServer.py
67 lines (64 loc) · 2.61 KB
/
wsServer.py
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
import SocketServer
import hashlib
import base64
import time
class MyTCPHandler(SocketServer.BaseRequestHandler):
def __init__(self, request, client_address, server):
SocketServer.BaseRequestHandler.__init__(self, request, client_address, server)
return
def handle(self):
data = self.request.recv(1024)
handshake = data.split("\r\n")
print handshake
reply = ["HTTP/1.1 101 Switching Protocols"]
for i in handshake:
if i.startswith("Upgrade:"):
reply.append(i)
elif i.startswith("Connection:"):
reply.append(i)
elif i.startswith("Sec-WebSocket-Key:"):
key = hashlib.sha1(i.split()[1]+"258EAFA5-E914-47DA-95CA-C5AB0DC85B11").digest()
key = base64.b64encode(key)
reply.append("Sec-WebSocket-Accept:"+key)
elif i.startswith("Sec-WebSocket-Protocol:"):
reply.append(i.split(",")[0])
print reply
self.request.sendall("\r\n".join(reply)+"\r\n\r\n")
"""
data = bytearray([0x81, 0x05, 0x48, 0x65, 0x6c, 0x6c, 0x6f]) # hello
self.request.sendall(data)
data = bytearray([0x82, 0x05, 0x48, 0x65, 0x6c, 0x6c, 0x5f]) # hello
self.request.sendall(data)
head = bytearray([0x02, 0x05])
data = bytearray([0x48, 0x65, 0x6c, 0x6c, 0x5f]) # hello
self.request.sendall(head+data)
head = bytearray([0x00, 0x05])
data = bytearray([0x48, 0x65, 0x6c, 0x6c, 0x5f]) # hello
self.request.sendall(head+data)
head = bytearray([0x80, 0x05])
data = bytearray([0x48, 0x65, 0x6c, 0x6c, 0x5f]) # hello
self.request.sendall(head+data)
return
"""
for i in range(1, 9422):
jpgName = "../jpg/output{:08d}.jpg".format(i)
with open(jpgName, "rb") as f:
b = bytearray(f.read())
if len(b) > 0xffff:
head = bytearray([0x82, 0x7f, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0])
head.append(len(b)>>16)
head.append((len(b)>>8)&0xff)
head.append(len(b)&0xff)
else:
head = bytearray([0x82, 0x7e])
head.append(len(b)>>8)
head.append(len(b)&0xff)
self.request.sendall(head + b)
print "send", jpgName, len(b), "bytes"
time.sleep(0.05)
def main():
HOST, PORT = "", 9999
server = SocketServer.TCPServer((HOST, PORT), MyTCPHandler)
server.serve_forever()
if __name__ == "__main__":
main()