看到的其他的通信服务器太过简单,现在写个用类/异常检测的
废话不多说,上代码:
#服务器
import SocketServer
import time
playNum = 0 #在线人数
class MyTCPHandler(SocketServer.
BaseRequestHandler): #建立链接时会自动执行handle方法
def handle(self):
print '连接到客户端:', self.client_address
global playNum
playNum += 1
print '目前在线人数:', playNum
while True:
try:
data = self.request.recv(1024)
if data == '':
break
print '->client:', data
self.request.send(data)
except:
print '客户端', self.client_address, '断开连接'
break
playNum += -1
print '目前在线人数:', playNum
self.request.close()
__name__ == '__main__':
server = SocketServer.ThreadingTCPServer(('127.0.0.1', 8080),MyTCPHandler)
server.serve_forever() # 链接循环
#客户端
import socket
import time
def client():
try:
client = socket.socket(socket.AF_INET,socket.SOCK_STREAM)
client.connect(('127.0.0.1',8080))
while True:
msg = raw_input('shuru:')
client.sendall(msg)
data = client.recv(1024)
print(data)
except:
print '服务器无法连接,正在尝试重新连接...'
while True:
main()
time.sleep(2)
def main():
client()
if __name__ == '__main__':
main()