0
点赞
收藏
分享

微信扫一扫

new CCDIKSolver( OOI.kira, iks ); // 创建逆运动学求解器

冶炼厂小练 2024-05-30 阅读 5

###server

import socket
import threading
import json


def send_data(client,addr):
    while(1):
        ss=input(f"要发送给{addr}输入:")
        client.send(ss.encode("utf-8"))


def recv_data(client,addr,sockt_dict):
    stat=True
    threading.Thread(target=send_data,args=(client,addr,)).start()
    while(1):
        try:
            data=client.recv(1024)
        except Exception as e1:
            cur_name=name
            for name in sockt_dict.keys():
                if sockt_dict[name]==client:
                    cur_name=name
            del sockt_dict[cur_name]
            for name in sockt_dict:
                sockt_dict[name].send((cur_name+'::已下线,当前用户列表如下\n').encode("utf-8"))
                sockt_dict[name].send(str(list(sockt_dict.keys())).encode("utf-8"))
            client.close()
            break
        if not sockt_dict.get(data.decode("utf-8")) and stat==True:
            sockt_dict[data.decode("utf-8")]=client
            print(sockt_dict)
            for name in sockt_dict:
                sockt_dict[name].send(str(list(sockt_dict.keys())).encode("utf-8"))
            stat=False
            continue
        if not data:
            continue
        try:
            ss=json.loads(data.decode("utf-8"))
            sockt_dict[ss['name']].send((ss['des_name']+"和你说::::》》"+ss['message']).encode("utf-8"))
        except Exception as e2:
            try:
                del sockt_dict[ss['name']]
                sockt_dict[ss['des_name']].send(('发送消息失败,这个人已经下线!').encode("utf-8"))
            except Exception as e:
                sockt_dict[ss['des_name']].send(('发送消息失败,没有这个人!').encode("utf-8"))
                pass
            pass
    

if __name__=="__main__":
    s=socket.socket(socket.AF_INET,socket.SOCK_STREAM)
    s.bind(("127.0.0.1",2000))
    s.listen(10)
    sockt_dict=dict()
    while(1):
        client,addr=s.accept()
        print(addr)
        threading.Thread(target=recv_data,args=(client,addr,sockt_dict,)).start()
        
###client

import socket
import threading
import json


def send_data(client):
    stat=True
    my_name=''
    while(1):
        if stat==True:
            print(stat)
            ss=input("请输入姓名:")
            my_name=ss
            client.send(ss.encode("utf-8"))
            stat=False
        else:
            tmp=dict()
            tmp['des_name']=my_name
            tmp['name']=input("你想把消息发送给谁:")
            tmp['message']=input("请输入消息:")
            ss=json.dumps(tmp)
            client.send(ss.encode("utf-8"))

if __name__=="__main__":
    s=socket.socket(socket.AF_INET,socket.SOCK_STREAM)
    s.connect(("127.0.0.1",2000))
    threading.Thread(target=send_data,args=(s,)).start()
    while(1):
        data=s.recv(1024)
        if not data:
            continue
        print("\n"+data.decode("utf-8"))
 

举报

相关推荐

0 条评论