zoukankan      html  css  js  c++  java
  • tcp+多线程=收发信息

    服务端:(本机测试)

    from socket import *
    from time import *
    import threading
    
    HOST = gethostname()
    PORT = 2001
    ADDR = (HOST,PORT)
    
    tcps = socket(AF_INET,SOCK_STREAM)
    tcps.bind(ADDR)
    tcps.listen(5)
    
    def recv_msg(con):
        try:
            while True:
                message = con.recv(1024).decode()
                print(message)
                if message == 'quit':
                    con.close()
        except ConnectionAbortedError:
            return '您已经断开连接。'
        except OSError:
            return '对方断开了连接'
    
    def send_mag(con):
        try:
            while True:
                data = input('>>')
                con.send(data.encode())
                if data == 'quit':
                    con.close()
        except ConnectionAbortedError:
            return '您已经断开连接。'
        except OSError:
            return '对方断开了连接'
    
    while True:
        print('waiting for connection...')
        con,addr = tcps.accept()
        print('...connected from:',addr)
        r = threading.Thread(target=recv_msg,args=(con,))
        s = threading.Thread(target=send_mag,args=(con,))
        r.start()
        s.start()
    tcps.close()

    客户端:

    from socket import *
    from time import *
    import threading
    
    HOST = gethostname()
    PORT = 2001
    ADDR = (HOST,PORT)
    
    def recv_msg(con):
        try:
            while True:
                message,a = con.recvfrom(1024)
                print(message.decode())
                if message.decode() == 'quit':
                    con.close()
        except ConnectionAbortedError:
            return '您已经断开连接。'
        except OSError:
            return '对方断开了连接'
    
    def send_mag(con):
        try:
            while True:
                data = input('>>')
                con.send(data.encode())
                if data == 'quit':
                    con.close()
        except ConnectionAbortedError:
            return '您已经断开连接。'
        except OSError:
            return '对方断开了连接'
    
    tcpc = socket(AF_INET,SOCK_STREAM)
    tcpc.connect(ADDR)
    r = threading.Thread(target=recv_msg,args=(tcpc,))
    s = threading.Thread(target=send_mag,args=(tcpc,))
    r.start()
    s.start()
    渐变 --> 突变
  • 相关阅读:
    Class Loading Deadlocks
    Find out your Java heap memory size
    ZookeeperGettingStarted
    ZooKeeper的Znode剖析
    nginx+iis实现负载均衡
    ubuntu 18.04下svn的安装与基本命令
    在ubuntu中如何向U盘复制粘贴文件 Read-only file system
    Ubuntu16.04下安装破解secureCRT和secureFX的操作记录
    securecrt8注册码
    Doris FE负载均衡配置
  • 原文地址:https://www.cnblogs.com/lybpy/p/8025475.html
Copyright © 2011-2022 走看看