聊天器简易版
使用 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
点击图标启动应用即可.
来源: https://www.cnblogs.com/zhangfengxian/p/python-udp-simple-chat.html