python之udp協議與TCP協議的區別

2021-08-14 09:34:31 字數 3362 閱讀 2126

簡言之:使用udp協議時,不需要建立連線,只需要知道對方的ip位址和埠號,就可以直接發資料報。但是,能不能到達就不知道了

。速度比tcp傳送資料快

from 

socket import

*# 1.

建立udp

套接字udp_socket = socket(af_inet, sock_dgram)

# 2.

準備接收

⽅的位址

# '192.168.1.103'表示⽬

的ip位址# 8080表示⽬

的端⼝dest_addr = ('172.20.10.5'

, 8080) #

注意 是元組,

ip是字串,端

⼝是數字

# 3.

從鍵盤獲取資料

send_data =

input("請輸⼊

要傳送的資料

:")# 4.

傳送資料到指定的電腦上的指定程式中

udp_socket.sendto(send_data.encode('utf-8'), dest_addr)

# 5. 等待接收對⽅傳送的資料

recv_data = udp_socket.recvfrom(1024)

# 6. 顯示對⽅傳送的資料

# 接收到的資料recv_data是⼀個元組

# 第1個元素是對⽅傳送的資料

# 第2個元素是對⽅的ip和端⼝ # 6. 顯示對⽅傳送的資料

print(recv_data[0].decode('gbk'))

print(recv_data[1])

# 5.

關閉套接字

udp_socket.close()

import 

socket

import

threading

import

time

'''#

客戶端s = socket.socket(socket.af_inet,socket.sock_stream) #

建立socket

s.connect(('www.sina.com.cn',80))

# 傳送資料

加了限制後每次只能接受

1k資料

if d:

else:

break

data = b''.join(buffer)

s.close()

head,html = data.split(b'

\r\n\r\n

',1)

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

with open('sina.html','wb') as f:

f.write(html)

'''#

伺服器def

tcplink(sock

,addr

):print('accept new connection form%s:%s...'

%addr

) sock

.send(b'welcome')

while true

:data =

sock

.recv(1024)

time.sleep(1)

if not

data or

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

'exit'

:break

sock

.send(('hello, %s!'

% data.decode('utf-8')).encode('utf-8'))

sock

.close()

print('connection from %s:%s closed.'

% addr

)s = socket.socket(socket.af_inet,socket.sock_stream)

s.bind(('127.0.0.1'

,9999))

s.listen(5)

print('witing for connection....')

while true:#

接受乙個新連線

sock,addr = s.accept()

print(sock,addr)

#建立新執行緒來處理

tcp連線

t = threading.thread(target

=tcplink,

args

=(sock, addr))

t.start()

import 

socket

#客戶端

s = socket.socket(socket.af_inet, socket.sock_stream)

# 建立連線

:s.connect(('127.0.0.1'

, 9999))

# 接收歡迎訊息

:print(s.recv(1024).decode('utf-8'))

for

data in

[b'michael'

, b'tracy'

, b'sarah']:

# 傳送資料

:s.send(data)

print(s.recv(1024).decode('utf-8'))

s.send(b'exit')

s.close()

因為要把全世界不同型別的計算機連線起來,就需要通用的協議,其中tcp/ip是最重要的兩個協議                          

協議負責將資料從一台計算機發向另一台計算機,ip包的特點是按塊傳送,途徑多個路由,但不保證能到達,也不保證順序到達。

tcp協議則是建立在ip協議之上的。tcp協議負責在兩台計算機之間建立可靠連線,保證資料報按順序到達。tcp協議會通過握手建立連線,然後,對每個ip包編號,確保對方按順序收到,如果包丟掉了,就自動重發。

tcp是建立可靠連線,並且通訊雙方都可以以流的形式傳送資料。相對tcp,udp則是面向無連線的協議

UDP協議與UDP通訊

1 udp協議 udp是無連線通訊協議,即在資料傳輸時,資料的傳送端和接收端不建立邏輯連線。簡單來說,當一台計算機向另外一台計算機傳送資料時,傳送端不會確認接收端是否存在,就會發出資料,同樣接收端在收到資料時,也不會向傳送端反饋是否收到資料。但是在使用udp協議傳送資料時,由於udp的面向無連線性,...

TCP IP 協議之 UDP協議

1 udp 是面向使用者資料報的運輸層協議哈。不可靠,無連線。2 首部 共8b 源埠號 2b 目的埠號 2b udp長度 2b udp校驗和 2b 說明 1 對於udp的埠號,埠號是用來標記應用程序的,tcp和udp可以共用乙個埠號,這可以在ip首部中的協議欄位來區分開來。2 udp長度是首部長度與...

TCP協議與UDP協議

tcp協議,全稱傳輸控制協議,處在傳輸層之中,下層為網路層,上層為應用層。udp協議,全稱使用者資料報協議,所處位置與tcp相同。而談到傳輸層,則必須談到埠號,埠號的名稱可能沒有ip位址那麼響亮,但是它仍然非常重要,在tcp ip協議中,用 源ip 源埠號 目的ip 目的埠號 協議號 這樣乙個五元組...