python第九天
课程太简单,作业太困难,所以我来写微博回复一下战斗力,这才是事情的真相,明天还要跟领导吃饭,不会显我吃太多把我开除掉吧
soket编程,so easy,可是作业不会做
recv()跟accept()是阻塞的,数据交互过程如果某一端突然断开了连接,另外一端就会开始报复社会,所以要对数据进行验证
粘包问题的结局就是在发送数据前先发送数据的信息即可,然后循环收取一直到收齐数据即可
按照国际惯例该来代码了,可是这次的课程完全就是在用同一篇代码.....更重要的是作业也是....最重要的是作业我还没写出来,只能先放几个凑数的了
1 #!/usr/bin/env python2 import socketserver
3 import subprocess
4
5 class MyServer(socketserver.BaseRequestHandler):
6 def handle(self):
7 self.request.sendall(bytes('欢迎致电10086', encoding='utf-8'))
8 while True:
9 rec_mes = self.request.recv(1024)
10 print('%s:%s' % (self.client_address, rec_mes.decode()))
11 cmd = subprocess.Popen(rec_mes.decode(), shell=True, stdout=subprocess.PIPE, stderr=subprocess.PIPE)
12 cmd_ret = cmd.stdout.read()
13 if not cmd_ret:
14 cmd_ret = cmd.stderr.read()
15 if len(cmd_ret) == 0:
16 cmd_ret = bytes('cmd not output', encoding='utf-8')
17 self.request.sendall(cmd_ret)
18
19 if __name__ == '__main__':
20 server = socketserver.ThreadingTCPServer(('127.0.0.1', 9999), MyServer)
21 server.serve_forever()
1 #!/usr/bin/env python2 import socket
3 ip_port = ('127.0.0.1', 9999)
4 s = socket.socket()
5 s.connect(ip_port)
6 welcome_mes = s.recv(1024)
7 print(welcome_mes.decode())
8 while True:
9 send_mes = input('>>:').strip()
10 if len(send_mes) == 0:
11 continue
12 s.send(bytes(send_mes, encoding='utf-8'))
13 recv_mes = s.recv(1024)
14 print(str(recv_mes, encoding='utf-8'))
15 s.close()
这连粘包问题都没解决呢,而且还跟操作系统有关系,在win上直接会gg,写作业!我有师兄我不怕!
以上是 python第九天 的全部内容, 来源链接: utcz.com/z/387727.html