python可以实现socket服务器的编写,实现监听客户端的请求,并完成相应的业务逻辑基于应答。
第一种方式是通过socket原生态的方式,我们自己绑定主机和端口等:
from socket import *
#不指定host表示允许多个ip访问
myhost = ''
myport = 8087
#AF_INET表示ipv4 SOCK_STREAM表示以流的方式读取和发送
socketobj = new socket(AF_INET,SOCK_STREAM)
#绑定host和port
socketobj.bind((myhost,myport))
#同时允许128个请求同时访问
socketobj.listen(128)
while True:
#连接,获取地址
connection, address = socketobj.accept()
print 'connect by ' + str(address)
#每次获取1024个字节
data = connection.recv(1024)
#向客户端回送消息
connection.send('echo ' + data)
#关闭连接,短连接
connection.close()
第二种方式是通过TCPServer和BaseRequestHanddler实现服务绑定操作
from SocketServer import TCPServer,BaseRequestHandler
import traceback
class MySocketRequestHadler(BaseRequestHandler):
"""
define by myself about handler
"""
def handle(self):
#read the data from cleint and send something to cleint
while(True):
try:
#read 1024 byte every time
data = self.request.recv(1024).strip()
#print the source
print('receive data from (%r) %r' %(self.client_address,data))
self.request.sendall(data.upper() + '\n')
except:
tranceback.print_exc()
break
if __name__ == '__main__':
host = ""
port = 8080
addr = (host,port)
#instance TCPServer
server = TCPServer(addr,MySocketRequestHadler)
#start server
server.serve_forever()
下一篇实现第三种方式