python的Socketserver模块使用,异常处理
2015-03-11 15:18
531 查看
*******************************************server.py*******************************************
#!/usr/bin/env python
#coding:utf-8
import SocketServer
import subprocess
import os,time
class HandlerTCP(SocketServer.StreamRequestHandler):
def handle(self):
try:
while True:
data = self.rfile.readline().strip()
if data == '' or data == 'exit':
self.request.sendall('CTRL+C 退出')
self.finish()
else:
A = subprocess.Popen("%s" % data,bufsize=0,stdout=subprocess.PIPE,shell=True)
Line = 1
while Line:
Line = A.stdout.readline()
if Line == "\r\n":
pass
else:
self.wfile.write('%s \n' % Line.strip())
Line = Line.strip()
if Line:
pass
else:
self.wfile.write("<<EOF")
except Exception,e:
A.kill()
self.finish()
try:
con = SocketServer.ThreadingTCPServer(('127.0.0.1',34),HandlerTCP)
con.serve_forever()
except KeyboardInterrupt,e:
con.server_close()
except Exception,e:
if e[0] == 10048:
print '端口已被占用,请重新启动程序'
else:
print 'Good Bye',e[0]
*******************************************client.py*******************************************
#!/usr/bin/env python
#coding:utf-8
import socket
import os,sys
con = socket.socket(socket.AF_INET,socket.SOCK_STREAM)
con.connect(('127.0.0.1',34))
#con.settimeout(2)
try:
while True:
try:
Input = raw_input('Please Enter: ')
except KeyboardInterrupt,e:
con.close()
if Input:
con.send(Input+'\n')
try:
while True:
data = con.recv(2048)
if data:
if "<<EOF" not in data:
print data
else:
print data.split("<<")[0]
break
else:
break
except KeyboardInterrupt,e:
pass
else:
print '输入不能为空'
except Exception,e:
print 'Good Bye'
con.close()
#!/usr/bin/env python
#coding:utf-8
import SocketServer
import subprocess
import os,time
class HandlerTCP(SocketServer.StreamRequestHandler):
def handle(self):
try:
while True:
data = self.rfile.readline().strip()
if data == '' or data == 'exit':
self.request.sendall('CTRL+C 退出')
self.finish()
else:
A = subprocess.Popen("%s" % data,bufsize=0,stdout=subprocess.PIPE,shell=True)
Line = 1
while Line:
Line = A.stdout.readline()
if Line == "\r\n":
pass
else:
self.wfile.write('%s \n' % Line.strip())
Line = Line.strip()
if Line:
pass
else:
self.wfile.write("<<EOF")
except Exception,e:
A.kill()
self.finish()
try:
con = SocketServer.ThreadingTCPServer(('127.0.0.1',34),HandlerTCP)
con.serve_forever()
except KeyboardInterrupt,e:
con.server_close()
except Exception,e:
if e[0] == 10048:
print '端口已被占用,请重新启动程序'
else:
print 'Good Bye',e[0]
*******************************************client.py*******************************************
#!/usr/bin/env python
#coding:utf-8
import socket
import os,sys
con = socket.socket(socket.AF_INET,socket.SOCK_STREAM)
con.connect(('127.0.0.1',34))
#con.settimeout(2)
try:
while True:
try:
Input = raw_input('Please Enter: ')
except KeyboardInterrupt,e:
con.close()
if Input:
con.send(Input+'\n')
try:
while True:
data = con.recv(2048)
if data:
if "<<EOF" not in data:
print data
else:
print data.split("<<")[0]
break
else:
break
except KeyboardInterrupt,e:
pass
else:
print '输入不能为空'
except Exception,e:
print 'Good Bye'
con.close()
相关文章推荐
- Python使用SocketServer模块编写基本服务器程序的教程
- python-基于UDP通信的套接字,socketserver模块的使用
- Python使用SocketServer模块编写基本服务器程序的教程
- 浅析python中socketserver模块使用
- python中socket与socketserver模块简单入门使用
- 使用 Python 编写套接字应用程序 套接字和 SocketServer 模块
- 使用Python SocketServer快速实现多线程网络服务器
- Python模块解析之SocketServer(二)_BaseServer基类
- Python的Socket模块简单使用
- Python网络编程(3)——SocketServer模块与简单并发服务器
- Python使用TCPServer编写(多线程)Socket服务
- Python使用TCPServer编写(多线程)Socket服务
- 在python中编写socket服务端模块(一):使用select
- 使用Python的twisted和socket模块实现端口的负载分发
- Python使用TCPServer编写(多线程)Socket服务
- python socket编程(二)--SocketServer模块
- 在python中编写socket服务端模块(二):使用poll或epoll
- 在python中编写socket服务端模块(二):使用poll或epoll
- python网络编程之TCP通信实例和socketserver框架使用例子