socket之udp聊天器

2021-09-20 03:27:17 字數 3422 閱讀 2394

import socket

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

注:socket內引數,第一項為固定引數,第二項是選擇建立udp socket還是tcp socket

1.傳送資料
udp_socket.sendto(b"要傳送的資料"

,(對方的ip, port)

如果是簡單的直接傳送固定的資料,要在該資料前加乙個b,轉換一下格式

send_data =

input

("請輸入要傳送的資料:"

)udp_socket.sendto(send_data.encode(

"gbk"),

("192.168.43.159"

,8080

))

windows編碼是gbk, ubuntu編碼是utf-8

注:若傳送時沒繫結埠,每次傳送時都是系統隨機分配的埠

2.接受資料
udp_socket.close(

)

import socket

defsend_smg

(udp_socket)

:"""傳送訊息"""

# 獲取目標ip/port

dest_ip =

input

("請輸入目標ip:"

) dest_port =

int(

input

("請輸入目標埠:"))

# 獲取要傳送的內容

send_data =

input

("請輸入要傳送的訊息:"

) udp_socket.sendto(send_data.encode(

"gbk"),

(dest_ip, dest_port)

)def

recv_msg

(udp_socket)

:"""接受資料"""

# 接受顯示

recv_data = udp_socket.recvfrom(

1024

)print

("%s : %s"

%(recv_data[1]

, recv_data[0]

.decode(

"gbk"))

)def

main()

:# 建立socket

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

# 繫結資訊

udp_socket.bind((""

,7788))

# 迴圈來進行處理事情

while

true

:print

("udp聊天器v1.0"

.center(30,

"-")

)print

("1.傳送訊息"

)print

("2.接受訊息"

)print

("0.退出系統"

) op =

input

("請輸入功能選項:"

)if op ==

"1":

# 傳送

send_smg(udp_socket)

elif op ==

"2":

# 接受

recv_msg(udp_socket)

elif op ==

"0":

break

else

:print

("輸入有誤請重新輸入..."

) udp_socket.close(

)if __name__ ==

"__main__"

: main(

)

socket是全雙工的通訊,但此處只實現了半雙工,往後可以改進改進

還有就是此處用到乙個軟體網路除錯助手可向它收發的資料,看其中的過程

import socket

import threading

defsend_msg

(udp_socket, dest_ip, dest_port)

:"""傳送資料"""

while

true

: send_data =

input

("輸入要輸入的資料:"

) udp_socket.sendto(send_data.encode(

"gbk"),

(dest_ip, dest_port)

)def

recv_msg

(udp_socket)

:"""接受資料"""

while

true

: recv_data = udp_socket.recvfrom(

1024

)print

("%s : %s "

%(recv_data[1]

, recv_data[0]

.decode(

"gbk"))

)def

main()

:"""完成udp的整體控制"""

# 1.建立套接字

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

# 2.繫結本地資訊

udp_socket.bind((""

,7788))

# 3.獲取對方ip

dest_ip =

input

("請輸入對方的ip:"

) dest_port =

int(

input

("請輸入對方的port:"))

# 4.建立執行緒

t_recv = threading.thread(target=recv_msg, args=

(udp_socket,))

t_recv.start(

) t_send = threading.thread(target=send_msg, args=

(udp_socket, dest_ip, dest_port)

) t_send.start(

)if __name__ ==

'__main__'

: main(

)

UDP聊天器專案

由於udp通訊不是面向連線的,且雙方都可以利用套接字進行收發資訊 import socket def send msg udp socket dest ip input 請輸入你的ip dest port int input 請輸入你的埠 send data input 請輸入要傳送的資訊 將資訊傳...

應用 udp聊天器

網路通訊過程 網路通訊過程中,之所需要ip port等,就是為了能夠將乙個複雜的通訊過程進行任務劃分,從而保證資料準確無誤的傳遞 在乙個電腦中編寫1個程式,有2個功能 1.獲取鍵盤資料,並將其傳送給對方 2.接收資料並顯示 並且功能資料進行選擇以上的2個功能呼叫 要求實現上述程式 參考 import...

應用 udp聊天器

說明 在乙個電腦中編寫1個程式,有2個功能 1.獲取鍵盤資料,並將其傳送給對方 2.接收資料並顯示 並且功能資料進行選擇以上的2個功能呼叫 要求實現上述程式 參考 import socket def send msg udp socket 獲取鍵盤資料,並將其傳送給對方 1.從鍵盤輸入資料 msg ...