個數:2的16次方
埠是資料發出或接收的入口
埠的目的:通過埠號找到對應的程序,完成資料的通訊
著名埠0-1023
'''
這是建立了乙個基於udp協議的服務端
'''import socket
#todo 1.0 建立了乙個套接字,用來連線客戶端,傳送與接收資料
udp_server = socket.socket(family=socket.af_inet,
type
=socket.sock_dgram)
print
(udp_server)
# def __init__(self, family=af_inet, type=sock_stream, proto=0, fileno=none):
#family這個引數標誌著我們這個連線,基於網路,不需要改
#type這個引數用來標註的是連線方式:udp tcp
#todo 2.0 因為是伺服器,繫結ip與埠
udp_server.bind((''
,8080))
#埠繫結
# udp_server.bind((ip位址,埠))
#todo 3.0 等待客戶端傳送資料(請求資源)
while
true
:(data_bytes,address_info)
= udp_server.recvfrom(
1024
)#data資料是位元組流檔案
data_str = data_bytes.decode(
'gbk'
)print
(data_str)
print
(address_info)
#todo 4.0 處理客戶端的請求(拼接資源)
input_str =
input
('請輸入你需要傳送給客戶端的訊息'
)#todo 5.0 將客戶端需要的資料,傳送給客戶端
udp_server.sendto(input_str.encode(
'gbk'
),address_info)
#todo 6.0 將套接字關閉(釋放資源)
# udp_server.close()
import socket
#todo 1.0 建立乙個udp套接字
udp_client = socket.socket(family=socket.af_inet,
type
=socket.sock_dgram)
#todo 2.0 收發資訊
while
true
: data =
input
('請輸入需要傳送給客戶端的訊息'
) udp_client.sendto(data.encode(
'gbk'),
('192.168.137.1'
,8080))
#todo 3.0 接收服務端的訊息
(data,address_info)
= udp_client.recvfrom(
1024
)print
(data.decode(
'gbk'))
print
(address_info)
#todo 4.0 關閉套接字
#udp_client.close()
請求路徑:request url:
請求方法:request method:get
網域名稱:host:www.baidu.com
其他的在request headers裡面
2、伺服器接到請求之後,會將瀏覽器需要的資料傳送回來,包括:
響應狀態碼:status code:200 ok
響應型別:content-type:text/html;charset=utf-8
其他的資料在response headers裡面
3、如果還需要其他的資料,重複上面的兩個流程 基於UDP的服務端 客戶端
udp套接字的特點 udp提供的是不可靠的傳輸服務。如果只考慮可靠性tcp要優於udp,但是udp的結構要比tcp更簡潔。udp不會傳送ack的應答資訊,也不會像seq那樣給資料分配序號。因此,udp效能有時比tcp高出很多。程式設計實現簡單。可靠性雖然不及tcp,但也不會像想象中那麼頻繁的資料損毀...
TCP以及UDP服務端和客戶端
tcp server.py from datetime import datetime import socket address localhost 6789 max size 1000 print starting the server at datetime.now print waiting...
Python UDP客戶端 服務端
udpclient.py coding utf 8 from socket import servername 127.0.0.1 伺服器位址,本例中使用一台遠端主機 serverport 12000 伺服器指定的埠 clientsocket socket af inet,sock dgram 建立...