• python使用udp实现聊天器


    聊天器简易版

    使用udp实现一个简单的聊天器程序,要求如下:

    • 在一个电脑中编写1个程序,有2个功能
    • 1.获取键盘数据,并将其发送给对方
    • 2.接收数据并显示
    • 并且功能数据进行选择以上的2个功能调用

    例子程序如下:

    import socket
    
    
    def send_message(udp_socket):
        
            # 输入对方的ip/port
            dest_ip = input("请输入对方的ip:")
            dest_port = int(input("请输入对象的port:"))
        
            # 读取输入的数据
            send_data = input('请输入要发送的数据:')
        
            # 发送数据
            dest_addr = (dest_ip, dest_port)
            udp_socket.sendto(send_data.encode('GBK'), dest_addr)
    
    
    def recv_message(udp_socket):
    
            # 接收数据
            recv_data = udp_socket.recvfrom(1000)
            print("%s:%s" % (recv_data[1], recv_data[0].decode("utf-8")))   
    
    
    def main():
            # 创建套接字
            udp_socket = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
        
            while True:
                    send_message(udp_socket)
                    recv_message(udp_socket)
        
            # 关闭
            udp_socket.close()
        
    
    
    if __name__ == '__main__':
            main()
    

    运行程序:

    在聊天助手中进行交互:

    聊天器灵活版

    上面实现的聊天虽然可以使用,但是不太方便,我们希望是发送消息还是接受消息,可以自己选择,这样就方便的多。如下的程序运行输入三个命令来选择要执行的操作,程序如下:

    • 1表示发送数据
    • 2表示接收数据
    • 0表示退出
    import socket
    
    
    def send_message(udp_socket):
        
            # 输入对方的ip/port
            dest_ip = input("请输入对方的ip:")
            dest_port = int(input("请输入对象的port:"))
        
            # 读取输入的数据
            send_data = input('请输入要发送的数据:')
        
            # 发送数据
            dest_addr = (dest_ip, dest_port)
            udp_socket.sendto(send_data.encode('GBK'), dest_addr)
    
    
    def recv_message(udp_socket):
    
            # 接收数据
            recv_data = udp_socket.recvfrom(1000)
            print("%s:%s" % (recv_data[1], recv_data[0].decode("utf-8")))   
    
    
    def main():
            # 创建套接字
            udp_socket = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
        
            while True:
        
                    op = input("请输入您要执行的操作:")
        
                    if op == "1":
                            send_message(udp_socket)
                    elif op == "2":
                            recv_message(udp_socket)
                    elif op == "0":
                            break
                    else:
                            print("您的输入有误!")
        
            # 关闭
            udp_socket.close()
        
    
    
    if __name__ == '__main__':
            main()
    
    

    在ubuntu安装网络助手

    将下载好的网络助手的安装包(mNetAssist-release-amd64.deb)拷贝到桌面,执行如下操作:

    $ cd ~/Desktop
    $ sudo dpkg -i mNetAssist-release-amd64.deb
    [sudo] password for xxxx:
    Selecting previously unselected package mnetassist.
    (Reading database ... 182763 files and directories currently installed.)
    Preparing to unpack mNetAssist-release-amd64.deb ...
    Unpacking mnetassist (0.1.1) ...
    Setting up mnetassist (0.1.1) ...
    Processing triggers for gnome-menus (3.13.3-6ubuntu3.1) ...
    Processing triggers for desktop-file-utils (0.22-1ubuntu5.1) ...
    Processing triggers for bamfdaemon (0.5.3~bzr0+16.04.20160824-0ubuntu1) ...
    Rebuilding /usr/share/applications/bamf-2.index...
    Processing triggers for mime-support (3.59ubuntu1) ...
    

    如果没有抱错,安装成功,点击左上角的启动栏,输入mnetAssist

    点击图标启动应用即可。

  • 相关阅读:
    枚举、函数关于oracle函数listagg的使用说明by小雨
    执行、Mongodb MapReduce示例1个by小雨
    事务、异常TSQL 编码时应该注意的10个问题by小雨
    源、执行GoldenGate 单向DDL同步by小雨
    Oracle中的所有权限by小雨
    数据库、版本数据库学习从此开始by小雨
    统计、案例深入理解Oracle索引(10):索引列字符类型统计信息的32位限制by小雨
    字段、数据库表三大范式及存储方式by小雨
    数据库、用户第二章Getting Start with the Oracle Server(oracle入门)by小雨
    搜索、关键字截图留念,“万能数据库查询分析器”作为关键字在百度和谷歌上的海量搜索结果by小雨
  • 原文地址:https://www.cnblogs.com/zhangfengxian/p/python-udp-simple-chat.html
Copyright © 2020-2023  润新知