python第九天

python

课程太简单,作业太困难,所以我来写微博回复一下战斗力,这才是事情的真相,明天还要跟领导吃饭,不会显我吃太多把我开除掉吧

soket编程,so easy,可是作业不会做

recv()跟accept()是阻塞的,数据交互过程如果某一端突然断开了连接,另外一端就会开始报复社会,所以要对数据进行验证

粘包问题的结局就是在发送数据前先发送数据的信息即可,然后循环收取一直到收齐数据即可

按照国际惯例该来代码了,可是这次的课程完全就是在用同一篇代码.....更重要的是作业也是....最重要的是作业我还没写出来,只能先放几个凑数的了

 1 #!/usr/bin/env python

2 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 python

2 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

回到顶部