基於UDP協議通訊的套接字

2022-06-20 03:57:12 字數 2270 閱讀 6293

udp協議沒有粘包問題,但是緩衝區大小要足夠裝資料報大小,建議不要超過 512

服務端:

# 服務端

import socket

server = socket.socket(socket.af_inet, socket.sock_dgram) # 資料報協議-》udp

server.bind(('127.0.0.1', 8080))

# oserror: 乙個在資料報套接字上傳送的訊息大於內部訊息緩衝區或其他一些網路限制,或該使用者用於接收資料報的緩衝區比資料報小。

data, client_addr = server.recvfrom(1) # b'hello' ==> b'h'

print('第一次:', client_addr, data)

data, client_addr = server.recvfrom(1024) # b'world' ==> b'world'

print('第二次:', client_addr, data)

# data, client_addr = server.recvfrom(1024)

# print('第三次: ', client_addr, data)

server.close()

客戶端:

# 客戶端

import socket

client = socket.socket(socket.af_inet, socket.sock_dgram) # 資料報協議 ==> udp協議

client.sendto('hello'.encode('utf-8'), ('127.0.0.1', 8080))

client.sendto('world'.encode('utf-8'), ('127.0.0.1', 8080))

# client.sendto(''.encode('utf-8'), ('127.0.0.1',8080))

client.close()

基於udp協議通訊的套接字

伺服器:

1)建立套接字描述符(socket)

2)設定伺服器的 ip 位址和埠號(需要轉換為網路位元組序的格式)

3)將套接字描述符繫結到伺服器位址(bind)

4)從套接字描述符讀取來自客戶端的請求並取得客戶端的位址(recvfrom)

5)向套接字描述符寫入應答並傳送給客戶端(sendto)

6)回到第 4 步等待讀取下乙個來自客戶端的請求

客戶端:

1)建立套接字描述符(socket)

2)設定伺服器的 ip 位址和埠號(需要轉換為網路位元組序的格式)

3)向套接字描述符寫入請求並傳送給伺服器(sendto)

4)從套接字描述符讀取來自伺服器的應答(recvfrom)

5)關閉套接字描述符(close)

服務端:

# 服務端

import socket

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

server.bind(("127.0.0.1", 8080))

while true:

data,client_addr = server.recvfrom(1024)

print(data.decode("utf-8"))

server.sendto(data.upper(), client_addr)

server.close()

客戶端:

# 客戶端

import socket

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

while true:

msg = input("請傳送: ").strip()

client.sendto(msg.encode("utf-8"), ("127.0.0.1", 8080))

data, server_addr = client.recvfrom(1024)

print(data.decode("utf-8"))

對於 udp 協議,客戶端傳送空沒有問題,因為 udp 協議又叫資料報協議,自帶報頭,在傳送空的時候自動將報頭資訊傳送過去,所以服務端也能接收資料。同時 udp 協議可以同時處理多個客戶端,是因為 cpu 的處理速度快,給人感覺像是在同時處理

套接字程式設計 基於UDP協議的通訊程式設計

udp協議 服務端server的任務 建立套接字 在核心中建立乙個socket結構體,使程序與通訊網卡之間建立聯絡。為套接字繫結位址 在建立的socket結構體中描述埠,ip,協議資訊 為了告訴作業系統,當前這個套接字使用了哪個埠,若是收到了發往這個埠的資料則交給這個套接字進行處理 注意只能繫結本機...

基於tcp協議通訊的套接字

以打 舉例 import socket 1.買手機 phone socket.socket socket.af inet,socket.sock stream sock steam tcp流式協議,2.撥號 phone.connect 127.0.0.1 8080 3.發 收訊息 phone.sen...

基於UDP協議的socket套接字程式設計

目錄socket套接字包括使用tcp協議和udp協議進行通訊 socket指定使用udp通訊協議server socket.socket socket.af inet,type socket.sock dgram 傳送udp資料server.sendto 傳送資料 接收udp資料data,addr ...