-
-
[求助]python求助socketserver.小哥哥小姐姐们,谁赶紧来解决一下啊
-
发表于:
2018-8-8 14:53
2458
-
[求助]python求助socketserver.小哥哥小姐姐们,谁赶紧来解决一下啊
描述:
写了一个socketServer服务端.
两个socket客户端
要实现的功能是:启动服务端,再启动两个客户端(两个客户端代码一样)
连接成功后,两个客户端轮流发送数据给服务端.(注意:一个客户端发数字, 另外一个客户端发字母)
另外:我想把接收数据做一个txt日志并记录收到的内容.问题:为什么客户端轮流发送,服务端能后根据先后顺序print出收到的数据
可是,日志里顺序却乱了,根本没有根据先后顺序去记录,而是根据了客户端分组记录了?求:出现这个问题的原因
求:怎么解决,我要日志按照接收顺序来记录.
最后 求大神改造一下我的代码(服务端,把小白的代码改造的高大上一点)谢谢小甲鱼
谢谢各位大神
谢谢小哥哥
谢谢小姐姐
代码以及问题截图如下
import socket
import socketserver
import datetime
class MyTCPHandler(socketserver.BaseRequestHandler):
def handle(self):
filename = '%s_log.txt'%datetime.datetime.now().strftime('%Y-%m-%d')
with open(filename,'a') as f:
#获取客户端连接的时间
log_time = datetime.datetime.now().strftime('%Y-%m-%d %H:%M:%S.%f')
#写入日志:什么时间,客户端addr 已经连接
f.write(log_time+': 客户端'+str(self.client_address)+'已经连接。\n')
print(log_time+': 客户端'+str(self.client_address)+'已经连接。\n')
#开始循环接收数据
while True:
try:
#接收到数据
self.data = self.request.recv(1024).strip()#recv
#获取接收数据的时间
log_time = datetime.datetime.now().strftime('%Y-%m-%d %H:%M:%S.%f:')
f.write(log_time+' 收到数据【{}】'.format(self.client_address)+str(self.data)+'\n')
print(log_time+' 收到数据【{}】'.format(self.client_address)+str(self.data))
self.request.send(self.data.upper())
except ConnectionResetError as e:
f.write(log_time+':客户端'+str(self.client_address)+'断开连接。'+str(e)+'\n')
print(log_time+':客户端'+str(self.client_address)+'断开连接。'+str(e)+'\n')
break
if __name__ =='__main__':
HOST = socket.gethostbyname(socket.gethostname())
PORT = 9999
server = socketserver.ThreadingTCPServer((HOST,PORT),MyTCPHandler)
server.serve_forever()
客户端
import socket
client = socket.socket()
HOST = socket.gethostbyname(socket.gethostname())
PORT = 9999
client.connect((HOST,PORT))
while True:
cmd = input('>>:').strip()
if len(cmd) ==0:
continue
client.send(cmd.encode('utf-8'))
cmd_res = client.recv(1024)
print(cmd_res.decode())
client.close()
[招生]科锐逆向工程师培训(2024年11月15日实地,远程教学同时开班, 第51期)