• 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

    点击图标启动应用即可。

  • 相关阅读:
    ASP.NET AJAX 1.0 英文文档,视频教程
    第十五篇: Ajax Control Toolkit 控件包3. DragPanel (拖动效果)
    第二篇: Silverlight 下载与安装
    第十二篇: Ajax Control Toolkit 控件包1. Accordion (多层折叠效果)
    第一篇: Silverlight 效果展示
    第十四篇: 建立 AJAX 母版页 (为了后面例子方便)
    第三篇: Silverlight 2.0 下载与安装
    第十三篇: Ajax Control Toolkit 控件包2. CollapsiblePanel (展开和折叠效果)
    第十六篇: Ajax Control Toolkit 控件包4. DropShadow (阴影效果)
    ENDNOTE使用方法(转发)
  • 原文地址:https://www.cnblogs.com/zhangfengxian/p/python-udp-simple-chat.html
Copyright © 2020-2023  润新知