日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

Python UDP聊天器

發布時間:2024/4/11 python 32 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Python UDP聊天器 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

注釋:下面的邏輯分析思路來自李偉老師,感謝在python學習道路上提供的幫助。

程序需求說明:
在一個客戶端中編寫個程序,有3個基本的功能:

  • 1.首先獲取鍵盤數據,并將其發送給對方
  • 2.對方接收數據并顯示
  • 3.退出聊天系統

接下來我們分析下思路

功能: 1、發送消息 2、接收消息 3、退出系統

設計:

  • 發送消息 send_msg()
  • 接收消息 recv_msg()
  • 程序入口 main()

主入口:
1、導入模塊 2、創建套接字 3、綁定端口 發送消息:

  • 1、保存接收方信息(用戶輸入)
  • 2、保存接收方端口號(用戶輸入)
  • 3、保存要發送的內容(用戶輸入)
  • 4、把用戶輸入的內容編碼并發送

接收消息:
1、使用socket recvfrom 接收數據
2、解碼數據并且輸出

代碼實現:

定義一個send_msg()發送消息和recv_msg()接受消息的函數,是最基本的消息功能,下面通訊所用的是底層socket套接字。

import socketdef send_msg(udp_socket):"""發送消息的方法"""# 1、輸入接收方的ip地址ipaddr = input("請輸入接收方地址:\n")if len(ipaddr) == 0: #如果不輸入對應的ip地址,默認設置為本機的ip地址ipaddr = "192.168.1.1." #使用 ifconfig 命令 查看本機的ip地址print("默認設置為:%s" % ipaddr)# 2、輸入接收方的端口port = input("請輸入接收方端口號:\n")if len(port) == 0: # 端口不寫,提供一個默認值port = "2438"print("默認設置為:%s" % port)# 3、要求輸入要發送的內容content = input("請輸入要發送的內容:\n")# 4、發送數據udp_socket.sendto(content.encode(), (ipaddr, int(port)))def recv_msg(udp_socket):# 1、接收數據 1024表示本次接受的最大的字節數recv_data = udp_socket.recvfrom(1024)# 2、把接收到的數據(二進制)解碼并且顯示出來re_text = recv_data[0].decode()print("接收到消息為:%s" % re_text)ip_port = recv_data[1]# 3、打印顯示發送方的IP和端口信息print(ip_port)

main()函數是主程序的入口,上面是定義,下面我們來調用

if __name__ == '__main__':# 創建套接字 udp_socket = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)# 綁定端口為2438 udp_socket.bind(("", 2438))while True:# 給出提示,顯示聊天器的主要功能print("*************************")print("****   1.發送消息  ****")print("****   2.接收消息  ****")print("****   3.退出系統  ****")print("*************************")# 1、提示用戶選擇功能num = int(input("請選擇功能:\n"))# 2、判斷用戶選擇# 如果選擇1,調用發送消息的函數if num == 1:# print("您選擇了發送消息")send_msg(udp_socket)# 如果選擇2,調用接收消息的函數elif num == 2:# print("您recv_msg(udp_socket)# 如果選擇3,退出程序執行else:print("程序正在退出...")breakprint("程序已退出!~")# 關閉套接字 udp_socket.close()

注意:
這個程序是簡單的了解下udp的通信過程,有許多的bug。比如說當我們選擇了接受消息的時候,可是這個時候并沒有消息,會造成堵塞的問題,解決的方法是接受發送消息一起進行,這個問題我們先放在這里以后再解決。

總結

以上是生活随笔為你收集整理的Python UDP聊天器的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。