udp聊天器(客戶端 多工版)

2021-09-14 06:35:11 字數 1238 閱讀 6245

思路: 聊天器,我們利用socket傳送和接受資料

注意點: 不能只說一句話;(死迴圈:1傳送資料 2.退出)

import socket

import threading

# 封裝接收

def recv_msg(udp_socket):

while true:

# 傳送完畢資料以後要接收資料

str3, ip_port3 = udp_socket.recvfrom(1024)

print(ip_port3, ": " + str3.decode('utf-8'))

if __name__ == '__main__':

# 1.建立套接字(無論多少個迴圈,都需要乙個套接字)

udp_socket = socket.socket(socket.af_inet, socket.sock_dgram)

# windows下,在接收資料之前必須,設定埠

udp_socket.bind(("", 9999))

# 重新開闢乙個子執行緒,用多工的形式用於同時傳送和接收資料,而且不限制次數

t1 = threading.thread(target=recv_msg, args=(udp_socket,))

# 設定為守護主線程,先傳送資料再接收資料。程式會先進入傳送資料while迴圈。當傳送資料while結束的時候,t1也結束。

t1.setdaemon(true)

t1.start()

# 2.死迴圈:1傳送資料 2.退出(退出的時候t1執行緒也會結束)

while true:

str1 = input('請輸入功能編號: 1傳送資料 2退出 :')

# 判斷:

if str1 == "1":

# 傳送資料:

str_ip = input('請輸入對方的ip: ')

str_port = input('請輸入對方的埠: ')

str2 = input('請輸入想要傳送給對方的資料: ')

ip_port2 = (str_ip, int(str_port)) # ip是字串,埠是數值;(包含在乙個元祖中)

udp_socket.sendto(str2.encode('utf-8'), ip_port2)

elif str1 == "2":

break

# 3.關閉套接字

udp_socket.close()

多工版udp聊天器

import socket import threading def send msg udp socket 獲取鍵盤資料,並將其傳送給對方 while true 1.從鍵盤輸入資料 msg input n請輸入要傳送的資料 2.輸入對方的ip位址 3.輸入對方的port dest port int...

案例 多工版udp聊天器

說明要求實現上述要求 總結多工程式的特點 參考 import socket import threading def send msg udp socket 獲取鍵盤資料,並將其傳送給對方 while true 1.從鍵盤輸入資料 msg input n請輸入要傳送的資料 2.輸入對方的ip位址 3...

多工UDP聊天器

任務說明 import socket import threading 傳送資料函式 def send msg udp socket send content input 請輸入您要傳送的資料 send data send content.encode gbk dest port int input...