udp 的基本使用

2022-02-15 05:23:40 字數 1787 閱讀 2187

udp通訊

資料報協議(自帶報頭)

沒有雙向通道 通訊類似於發簡訊

1.udp協議客戶端允許發空

2.udp協議不會粘包

3.udp協議服務端不存在的情況下,客戶端照樣不會報錯?

4.udp協議支援併發

udp類似於發簡訊

tcp類似於打**

併發:看起來像同時執行的

並行:真正意義上的同時執行

客戶端

import socket

client = socket.socket(type=socket.sock_dgram)

# 不需要建立連線 直接進入通訊迴圈

server_address = ('127.0.0.1',8080)

while true:

client.sendto(b'hello',server_address)

data, addr = client.recvfrom(1024)

print('服務端發來的資料',data)

print('服務端的位址',addr)

服務端

import socket

server = socket.socket(type=socket.sock_dgram) # udp協議

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

# udp不需要設定半連線池 它也沒有半連線池的概念

# 因為沒有雙向通道 不需要accept 直接就是通訊迴圈

while true:

data, addr = server.recvfrom(1024)

print('資料:',data) # 客戶端發來的訊息

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

import socketserver

class myserver(socketserver.baserequesthandler):

def handle(self):

# print('來啦 老弟')

while true:

data = self.request.recv(1024)

print(self.client_address) # 客戶端位址

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

self.request.send(data.upper())

if __name__ == '__main__':

"""只要有客戶端連線 會自動交給自定義類中的handle方法去處理"""

server = socketserver.threadingtcpserver(('127.0.0.1',8080),myserver) # 建立乙個基於tcp的物件

server.serve_forever() # 啟動該服務物件

import socket

import time

client = socket.socket(type=socket.sock_dgram)

server_address = ('127.0.0.1',8080)

while true:

client.sendto(b'hello',server_address)

data,addr = client.recvfrom(1024)

print(data.decode('utf-8'),addr)

time.sleep(1)

UDP基本使用步驟

udp使用的特點是傳送方和接收方是完全平等的。對於傳送方,先鏈結自己的埠 建立資料報套接字並將其繫結到 本地主機上的指定埠。datagramsocket client newdatagramsocket 8888 將要傳送的資料換成位元組陣列形式 string data 仙桃中學 byte data...

Udp的簡單使用

傳送端 client 1.建立datagramsocket物件 scanner scanner new scanner system.in datagramsocket dp new datagramsocket 2.定義要傳送的物件 string message scanner.next 3.將要...

udp基本網路程式設計

udp傳輸資料不需要像tcp一樣建立連線,只需要知道客戶端和伺服器的ip位址即可。首先是伺服器端,初始化套接字結構位址,建立套接字,繫結埠,迴圈監聽。include include 基本標頭檔案 include socket include struct sockaddr in include st...