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()
    渐变 --> 突变
  • 相关阅读:
    代理模式
    组合模式
    yum配置文件详解
    责任链模式
    git看不到别人创建的远程分支
    学习gulpfile.babel.js随笔
    遍历数组的方法
    解决Error: ENOENT: no such file or directory, scandir 安装node-sass报错
    window对象
    Moment.js的一些用法
  • 原文地址:https://www.cnblogs.com/lybpy/p/8025475.html
Copyright © 2011-2022 走看看