使用TCPServer框架做通讯,不知道怎么把基类中的接收和发送的buf弄到主函数使用。求各路大神赐教,小弟不胜感激!
#!/usr/bin/env python
# -*- coding:utf-8 -*-
import random
import socket
import threading
import SocketServer
import json, types,string
import os, time
from time import ctime,sleep
send_buf = []
recv_buf = []
class ThreadedTCPRequestHandler(SocketServer.BaseRequestHandler):
def handle(self,data):
recv_buf = self.request.recv(1024)
cur_thread = threading.current_thread()
jresp = json.dumps(send_buf)
self.request.sendall(jresp)
return recv_buf
class ThreadedTCPServer(SocketServer.ThreadingMixIn, SocketServer.TCPServer):
pass
if __name__ == "__main__":
data = 123
ch = ThreadedTCPRequestHandler()
recv = ch.handle(data)
print(recv)
# Port 0 means to select an arbitrary unused port
HOST, PORT = "localhost", 4445
SocketServer.TCPServer.allow_reuse_address = True
server = ThreadedTCPServer((HOST, PORT), ThreadedTCPRequestHandler)
ip, port = server.server_address
# Start a thread with the server -- that thread will then start one
# more thread for each request
server_thread = threading.Thread(target=server.serve_forever)
# Exit the server thread when the main thread terminates
server_thread.daemon = True
server_thread.start()
print "Server loop running in thread:", server_thread.name
print " .... waiting for connection"
# Activate the server; this will keep running until you
# interrupt the program with Ctrl-C
server.serve_forever()
#!/usr/bin/env python
# -*- coding:utf-8 -*-
import random
import socket
import threading
import SocketServer
import json, types,string
import os, time
from time import ctime,sleep
send_buf = []
recv_buf = []
class ThreadedTCPRequestHandler(SocketServer.BaseRequestHandler):
def handle(self,data):
recv_buf = self.request.recv(1024)
cur_thread = threading.current_thread()
jresp = json.dumps(send_buf)
self.request.sendall(jresp)
return recv_buf
class ThreadedTCPServer(SocketServer.ThreadingMixIn, SocketServer.TCPServer):
pass
if __name__ == "__main__":
data = 123
ch = ThreadedTCPRequestHandler()
recv = ch.handle(data)
print(recv)
# Port 0 means to select an arbitrary unused port
HOST, PORT = "localhost", 4445
SocketServer.TCPServer.allow_reuse_address = True
server = ThreadedTCPServer((HOST, PORT), ThreadedTCPRequestHandler)
ip, port = server.server_address
# Start a thread with the server -- that thread will then start one
# more thread for each request
server_thread = threading.Thread(target=server.serve_forever)
# Exit the server thread when the main thread terminates
server_thread.daemon = True
server_thread.start()
print "Server loop running in thread:", server_thread.name
print " .... waiting for connection"
# Activate the server; this will keep running until you
# interrupt the program with Ctrl-C
server.serve_forever()