网络编程.
对,我踩坑了…...
直接看东西:
# coding=utf-8
import socketserver
class FtpServer(socketserver.BaseRequestHandler):
def setup(self):
t=self.request.recv(1024)
print(t)
def handle(self):
while True:
t = self.request.recv(1024)
print(t)
if __name__ == '__main__':
server = socketserver.ThreadingTCPServer(("127.0.0.1", 8000), FtpServer)
server.serve_forever()
作为一个服务器 |
然后 写一个客户端:
# coding=utf-8
import socket
ip_port = ("127.0.01", 8000)
sk = socket.socket()
sk.connect(ip_port)
sk.sendall("uuu".encode())
看样子是没毛病啊 |
然而:
等我执行完之后发现,擦,,,服务器竟然进入死循环了…..
然后我又试了下在交互式环境:
恩……没错,交互式环境竟然没有问题…………
好吧,下面是原因:
没有问题.
没错,当连接死了之后接收到的永远就是""空字符串了.然后就进死循环了…..
所以改造下:
# coding=utf-8
import socketserver
class FtpServer(socketserver.BaseRequestHandler):
def setup(self):
t = self.request.recv(1024)
print(t)
def handle(self):
while True:
t = self.request.recv(1024)
if not t:
self.request.close()
break
print(t)
if __name__ == '__main__':
server = socketserver.ThreadingTCPServer(("127.0.0.1", 9999), FtpServer)
server.serve_forever()
这样就 没问题了 |