簡言之:使用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 目的埠號 協議號 這樣乙個五元組...