zoukankan      html  css  js  c++  java
  • 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() 处理一个请求就退出
  • 相关阅读:
    用struct定义函数
    三、OCTAVE画图
    二、OCTAVE 移动数据
    SQL复习
    Flink处理迟到的数据
    LeetCode题目学习
    CentOS7安装pycharm
    IntelliJ IDEA 刷题利器 LeetCode 插件
    Redis命令学习
    项目杂记
  • 原文地址:https://www.cnblogs.com/hinimix/p/9056953.html
Copyright © 2011-2022 走看看