網路上的兩個程式通過乙個雙向的通訊連線實現資料的交換,這個連線的一端稱為乙個socket。下面用幾個實用的**來解釋:建立網路通訊連線至少要一對埠號(socket)。socket本質是程式設計介面(api),對tcp/ip的封裝,tcp/ip也要提供可供程式設計師做網路開發所用的介面,這就是socket程式設計介面;http是轎車,提供了封裝或者顯示資料的具體形式;socket是發動機,提供了網路通訊的能力。
建立乙個tcp socket(tcp套接字)
import socket
s = socket.socket(socket.af_inet, socket.sock_stream)
# ...這是使用套接的功能(省略)...
# 不用的時候,關閉套接字
s.close()
建立乙個upd socket(upd套接字)
import socket
# 建立udp的套接字
s = socket.socket(socket.af_inet, socket.sock_dgram)
# ...這裡是使用套接字功能(省略)...
# 不用的時候,關閉套接字
s.close()
說明
建立套接字
使用套接字收/發資料
關閉套接字
udp發資料
# -*- coding:utf-8 -*-
from socket import *
# 1. 建立udp套接字
upd_cocket = socket(af_inet, sock_dgram)
# 2. 準備收接方的位址
# '199.168.1.103' 表示目的ip位址
# 8080 表示目的埠
dest_addr = ('199.168.1.103:8080') # 注意 是元組 ,ip是字串,埠號是數字
# 3. 從鍵盤獲取資料
send_data = input("請輸入資料")
# 4. 傳送資料到指定的電腦上的指定程式中
udp_socket.sendto(send_data.encode('utf-8'), dest_addr)
# 5. 關閉套接字
udp_socket.close()
udp收資料# -*- coding:utf-8 -*-
from socket import *
# 1. 建立套接字
udp_socket = socket(af_inet, sock_dgram)
# 2. 繫結本地的相關資訊,如果乙個網路程式不繫結,則系統會隨機分配
local_addr = (' ',7788) # ip位址和埠號,ip一般不用寫表示本機的任何乙個ip
udp_socket.bind(local_addr) # 必須繫結本地自己的ip和埠
# 3. 等待接受對方的資料
recv_data = udp_socket.recvfrom(1024) # 表示本次接受的最大位元組數
# 4. 顯示接受到的資料
print(recv_data[0].decode('gbk')) # windows預設是gbk編碼,必須寫gbk編碼,ubuntu預設是utf-8編碼
# (b'', ('172.33.19.150', 8080))
# 傳送過來的是元組,我們想要的是元組第0個元素,第1個元素是傳送方的ip和埠
# 5. 關閉套接字
udp_socket.close()
未完待續… webSocket 基本使用
安裝 websocketnpm i ws建立物件const websocket require ws const wss newwebsocket.srever 監聽事件 連線事件 wss.on connection client 接收資料事件 wss.on connection client 傳送...
websocket 的簡單使用
我的應用場景是多連線使用者均會收到i系統訊息 由於webocket server原始碼的鏈結關閉日誌列印問題 以及需求增加websoket的token驗證所以這裡是直接copy了原始碼下來進行的修改 詳情見websocket.py檔案 舉例 class websocket object def in...
websocket的原理及使用
很多人疑惑有http,為什麼要使用websocket?因為http是超文字傳輸協議,的通訊只能有客戶端發起 其連線如圖下 如果伺服器有連續的狀態變化,客戶端要獲知就非常麻煩,可以採用輪詢的方式 客戶端每隔一段時間就向伺服器發起請求 但這種方式很耗資源,效率較低。websocket是html5新增的一...