【转】经典SQL语句大全
2013-05-20 18:05
155 查看
创建服务器的步骤:先创建一个request handler类通过子类化BaseRequestHandler然后重载handle()方法。然后通过传入服务器的地址和request handler来初始化一个服务类。最后调用handle_request()或serve_forever()来运行。
TCP:
客户端使用socket编写的话,连接后只能进行一此数据传输,之后便会关闭。
UDP:
本文出自 “莲的思念” 博客,请务必保留此出处http://liandesinian.blog.51cto.com/7737219/1588409
TCP:
import SocketServer class MyTCPServer(SocketServer.BaseRequestHandler): """ The RequestHandler class for our server It is instantiated once per connection to the server, and must override the handle() method to implement communication to the client. """ def handle(self): #self.request is the TCP socket connected to the client self.data=self.request.recv(2048).strip() print '{} wrote:'.format(self.client_address[0]) print self.data self.request.sendall(self.data.upper()) if __name__=='__main__': HOST,PORT='',51234 server=SocketServer.TCPServer((HOST,PORT),MyTCPServer) server.serve_forever() # class MyTCPServer(SocketServer.StreamRequestHandler): # def handle(self): #self.rfile is a file-like object created by the handler; #we can now use e.g. readline() instead of raw recv() calls # self.data=self.rfile.readline().strip() # print '{} wrote:'.format(self.client_address[0]) # print self.data #Likewise, self.wfile is a file-like object used to write back # to the client # # self.wfile.write(self.data.upper())第二个handler的readline会多次调用recv直到遇到一个换行符,而第一个handler的recv()会返回客户端在一个sendall()里面发送的所有东西。
客户端使用socket编写的话,连接后只能进行一此数据传输,之后便会关闭。
UDP:
import SocketServer class MyUDPServer(SocketServer.BaseRequestHandler): """ This class works similar to TCP handler class,except that self.request consists of a pair of data and client socket , and since there is no connnection the client address must be given explicitly when sending data back via sendto() """ def handle(self): data=self.request[0].strip() sock=self.request[1] print "{} wrote:".format(self.client_address[0]) print data socket.sendto(data.upper(),self.client_address) if __name__=='__main__': HOST,PORT='',51234 server=SocketServer.UDPServer((HOST,PORT),MyUDPServer) server.serve_forever()
本文出自 “莲的思念” 博客,请务必保留此出处http://liandesinian.blog.51cto.com/7737219/1588409