美文网首页计算机技术杂类一起玩python程序员
聊天工具简单实现(python 半双工聊天)

聊天工具简单实现(python 半双工聊天)

作者: 肥宅_Sean | 来源:发表于2018-02-27 15:42 被阅读76次

    转自我的CSDN博客~

    这个项目的代码还存在很多问题,下面列举了三个,以后再慢慢对这个进行完善

    • 客户端启动之前需要保证服务端已经启动了~
    • 必须等到对方发送完信息之后才能再回复
    • 必须要将服务端的防火墙给关闭
    • 功能仅限于聊天

    总共有两个代码,这个不同于之前的那个项目,这个项目实现了,客户端和服务双方的交互(半双工聊天

    代码我已经自己用过了。可以使用。大家有兴趣可以拿去学习~

    服务端代码:必须要先运行器服务端的代码,然后,还要将服务端的防火墙关闭了才能接受到其他电脑的通过外网的交互!!

    from socket import *
    from time import ctime
    HOST = gethostbyname(gethostname())
    POST = 21567
    BUFSIZ = 1024
    
    ADDR = (HOST, POST)
    
    tcpSerSock = socket(AF_INET, SOCK_STREAM)
    tcpSerSock.bind(ADDR)
    tcpSerSock.listen(5)
    print("HOST is %s" % HOST)
    
    print("Wait for connect")
    tcpCliSock, addr = tcpSerSock.accept()
    print('...connect from:', addr)
    #  建立连接
    
    while True:
        data = tcpCliSock.recv(BUFSIZ)
        if not data:
            break
        print('[%s] : %s' % (ctime(), data.decode()))
        Meg = input('> ')
        tcpCliSock.send(Meg.encode())
        if not Meg:
            break
    

    下面是客户端代码,记得要修改下那个HOST,改成服务端的IP地址就好了~

    from socket import *
    from time import ctime
    
    HOST = '自己写个IP地址(服务端,那个需要把防火墙关掉的电脑的IP地址)'
    POST = 21567
    BUFSIZ = 1024
    ADDR = (HOST, POST)
    
    tcpCliSock = socket(AF_INET, SOCK_STREAM)
    tcpCliSock.connect(ADDR)
    
    while True:
        data = input('> ')
        if not data:
            break
        tcpCliSock.send(data.encode())
        data = tcpCliSock.recv(BUFSIZ)
        if not data:
            break
        print('[%s]: %s' % (ctime(), data.decode()))
    

    相关文章

      网友评论

        本文标题:聊天工具简单实现(python 半双工聊天)

        本文链接:https://www.haomeiwen.com/subject/dxlmxftx.html