tcp/socket

ftp server
  1,读取文件名
2,检测文件是否存在
3,打开文件
4,检测文件大小
5,发送文件大小和md5给客户端
6,等待客户端确认
7,开始边读边发
# 粘包
两个相邻的包一起发会导致错误
time.sleep(0.5)会避免
client_ack = conn.recv(1024) 进行一次接收,避免粘包


服务器端

import socket

server = socket.socket()
server.bind(("localhost", 6969))        #绑定要监听的端口
server.listen(2)     #监听多少个连接

while True:
    conn,addr=server.accept()           #等待数据
    #conn就是客户端连过来而在服务器端围棋生成的一个连接实例
    print(conn)
    print(addr)
    # server.accept()
    while True:
        data = conn.recv(1024)
        if data is None:
            print("connection lost")
            break
        print("recv", data)
        print(type(data))
        conn.send(data.upper())

server.close()

 

客户端

import socket

client = socket.socket()         #生命socket类型,生成socket连接对象
client.connect(('localhost', 6969))
while True:
        msg = input("type here >>").strip()
        if len(msg) == 0:
                continue
        client.send(msg.encode('utf-8')),       # 不能send空

        data = client.recv(1024)

        print(data.decode())

client.close()

 

socket server
1,必须创建一个请求处理类继承BaseRequestHandler,重写父类里的handle()方法
2,必须实例化TCPserver并且传递server IP和上面创建的请求处理类
3,请求函数:
server.server_forever() 处理多个请求,永远执行
server.handle_request() 处理一个请求就退出
posted @ 2018-05-18 16:55  安慧桥没有你  阅读(143)  评论(0编辑  收藏  举报