zoukankan      html  css  js  c++  java
  • day 29(作业)

    # 服务端
    import socket
    import struct
    import json
    from threading import Thread
    
    server = socket.socket()
    server.bind(
        ('127.0.0.1', 9608)
    )
    server.listen(5)
    
    
    def my_server(conn):
        while True:
            try:
                headers = conn.recv(4)
                if not headers:
                    continue
                data_len = struct.unpack('i', headers)[0]
                bytes_data = conn.recv(data_len)
                back_dic = json.loads(bytes_data.decode('utf-8'))
                if back_dic['msg'] == 'q':
                    break
                print(f'{back_dic["name"]}:{back_dic["msg"]}')
                msg1 = back_dic["msg"]
                msg = msg1.upper()
                to_dic = {'name': 'logan', 'msg': msg}
                json_dic = json.dumps(to_dic)
                bytes_dic = json_dic.encode('utf-8')
                send_dic = struct.pack('i', len(bytes_dic))
                conn.send(send_dic)
                conn.send(bytes_dic)
            except Exception as e:
                print(e)
                break
    
    
    if __name__ == '__main__':
        while True:
            conn, addr = server.accept()
            t = Thread(target=my_server, args=(conn,))
            t.start()
    
    
    # 客户端
    import socket
    import struct
    import json
    
    client = socket.socket()
    client.connect(
        ('127.0.0.1', 9608)
    )
    while True:
        try:
            msg = input('发送内容:')
            if msg == 'q':
                break
            dic = {'name': '用户1', 'msg': msg}
            bytes_dic = json.dumps(dic)
            send_dic = bytes_dic.encode('utf-8')
            send_len = struct.pack('i', len(send_dic))
            client.send(send_len)
            client.send(send_dic)
            headers = client.recv(4)
            data_len = struct.unpack('i', headers)[0]
            bytes_data = client.recv(data_len)
            back_dic = json.loads(bytes_data.decode('utf-8'))
            print(f'{back_dic["name"]}:{back_dic["msg"]}')
        except Exception as e:
            print(e)
            break
    client.close()
    
    
  • 相关阅读:
    java基础之 javac编译单个文件并执行 带jar包
    java 按照字符数分解字符串
    转载 模糊查询map中的key
    public final static PrintStream out = null; 的实例化猜想
    从0开始搭个网站在云上 思路引导
    java 泛型操作
    git 命令行
    React Native 安卓添加阴影
    react native 按钮的那些事
    mac 下 react Native android环境搭建
  • 原文地址:https://www.cnblogs.com/luocongyu/p/11722221.html
Copyright © 2011-2022 走看看