• 网络编程----踩坑篇


    网络编程.

    对,我踩坑了…...

    直接看东西:

    1. # coding=utf-8  
    2. import socketserver  
    3. class FtpServer(socketserver.BaseRequestHandler):  
    4.     def setup(self):  
    5.         t=self.request.recv(1024)  
    6.         print(t)  
    7.     def handle(self):  
    8.         while True:  
    9.             t = self.request.recv(1024)  
    10.             print(t)  
    11. if __name__ == '__main__':  
    12.     server = socketserver.ThreadingTCPServer(("127.0.0.1", 8000), FtpServer)  
    13.     server.serve_forever()  

    作为一个服务器

    然后 写一个客户端:

    1. # coding=utf-8  
    2. import socket  
    3. ip_port = ("127.0.01", 8000)  
    4. sk = socket.socket()  
    5. sk.connect(ip_port)  
    6. sk.sendall("uuu".encode())  

    看样子是没毛病啊

    然而:

    等我执行完之后发现,擦,,,服务器竟然进入死循环了…..

     

     

    然后我又试了下在交互式环境:

    恩……没错,交互式环境竟然没有问题…………

     

     

     

     

     

     

     

     

     

     

     

    好吧,下面是原因:

    没有问题.

    没错,当连接死了之后接收到的永远就是""空字符串了.然后就进死循环了…..

     

    所以改造下:

    1. # coding=utf-8  
    2. import socketserver  
    3.     
    4.     
    5. class FtpServer(socketserver.BaseRequestHandler):  
    6.     def setup(self):  
    7.         t = self.request.recv(1024)  
    8.         print(t)  
    9.     
    10.     def handle(self):  
    11.         while True:  
    12.             t = self.request.recv(1024)  
    13.             if not t:  
    14.                 self.request.close()  
    15.                 break  
    16.             print(t)  
    17.     
    18.     
    19. if __name__ == '__main__':  
    20.     server = socketserver.ThreadingTCPServer(("127.0.0.1", 9999), FtpServer)  
    21.     server.serve_forever()  

    这样就 没问题了

  • 相关阅读:
    洛谷
    洛谷
    洛谷
    洛谷
    洛谷
    模板
    模板
    模板
    洛谷
    模板
  • 原文地址:https://www.cnblogs.com/twotigers/p/7803896.html
Copyright © 2020-2023  润新知