學習進度
我寫的日記倒不如說是筆記,今天的學習也算可以,敲了乙個udp聊天的例項,**不是很多,但是**的註解叫我很是費腦筋,敲了好多,唯恐描述不清楚,也並非有大胸懷去教會他人,只求在以後偶然翻看,自己能理解。
說明在我學習的這些課程均用到linux系統的終端,虛擬機器,由於本人能力有限制,並不能保證所有**均準確無誤,但也盡力將錯誤降至最低,如果博文能對您產生一點點幫助,那也是非常榮幸。
socket簡介(套接字)
兩個不同主機之間的程序進行通訊的埠,socket 是網路通訊的基本單元,網路資料的控制單元,網頁瀏覽,qq聊天等均使用socket
socket的建立步驟:
匯入模組
建立套接字
資料傳輸
關閉套接字
'''#匯入模組 socket
#建立乙個套接字,使用ip v4,使用udp方式
#資料的傳遞
#關閉套接字
'''#匯入模組 socket
import socket
#建立乙個套接字,使用ip v4,使用udp方式
#udp_socket = socket.socket(協議型別,傳輸方式)
#引數一:socket.af_inet 使用ipv4
#socket.af_inet6 使用ipv6
#引數二:scoket.sock_dgram使用upd 的傳輸方式(無連線)
#socket.sock_stream 使用tcp的傳輸方式(有鏈結)
udp_socket = socket.socket(socket.af_inet,socket.sock_dgram)
#繫結傳送端的埠繫結
#upd_socket.bind(adress)
#address 是乙個元組,元組的第乙個元素是字串型別的ip位址,第二個元素 整數埠號
#ip位址可以省略 省略之後是自己的ip位址
#ip位址盡可能為空,好處是可以接受不同網絡卡的資訊
upd_socket.bind(
('ip位址'
,8888))
#繫結的必須是自己的位置('ip位址',8888),8888 是自定義
#資料的傳遞
#socket.sendto(要傳送的資料的二進位制格式,對方的ip位址和埠號)
#引數一:要傳送的資料二進位制格式
#字串轉換為二進位制格式 :字串.encode() 把字串轉化為二進位制
#引數二:對方發ip和埠號 address型別
udp_socket.sendto(
'字串'
.encode(),
('ip位址',8080))
#資料的接受(二級制)
#recvfeom(1024) 方法的作用:
#從套接字中接受1024個位元組的資料
#此方法會造成程式的阻塞,等待另一台計算機發來資料
#如果對方發資料了,recvfrom會自動解除阻塞
#如果對方沒有傳送,會一直等待
#接受到的資料是乙個元組,接受資料的二級制,傳送方的ip位址和埠號
recv_data = upd_socket.recvfrom(
1024
)#recv_data[0] 接受到的資料的二機制格式
#recv_data[1] 元組,對方的ip和埠
#解碼資料,得到字串
#errors = 'ignore' 出現錯誤後,如何處理 忽略錯誤資訊
#errors = 'strict' 嚴格模式,解碼錯誤
#decode(encoding = 'utf-8',errors = '')
recv_text = recv_data[0]
.decode(
'gbk'
)#輸出顯示接受的內容
print
('來自:'
,recv_data[0]
,'的訊息'
,recv_text)
decode(
) 解碼
#關閉套接字
udp_socket.close(
)
udp廣播
**如下:
#匯入模組
import socket
#建立套接字
socket.socket(socket.af_inet,socket.sock_dgram)
#設定廣播許可權(套接字預設不允許傳送廣播,需要開啟相關的許可權)
#socket.setsockopt(套接字,廣播屬性,屬性值)
#廣播位址 ***.***.***.255 或者 255.255.255.255
#socket.sol_socket 當前的套接字
#socket.so_broadcast 廣播屬性
udp_socket = socket.setsocket(socket.sol_socket,socket.so_broadcast,
true
)#傳送資料
#255.255.255.255也可以寫 當前區域性網路號下的主機
udp_socket.sendto(
'字串'
.encod(),
('255.255.255.255'
,8080))
#關閉套接字
upd_socket.close(
)
未完待續。。。。。。 愚公移山日記 11
學習進度 今天的學習內容確實有點少,主要是剛買到一本新書,一本很基礎的書,有一本新書,肯定是要看的呀,但是書本的內容實在是太基礎,但是又害怕直接跳過,會錯過寫什麼內容,畢竟python的內容實在是太豐富了。下面我來根據子所學的內容,和自己的實踐經驗來給各位分享一下吧。idle的使用介紹 氣泡排序法 ...
愚公移山日記 23
網域名稱 網域名稱解析系統,主要適用於將網域名稱轉換成對應的ip位址。瀏覽器訪問伺服器的過程 瀏覽器與伺服器建立連線時,是先去訪問dns伺服器,返回網域名稱相對應的ip位址,再去將得到的ip位址區連線相應的伺服器,由伺服器返回給我們資訊。當然在實際的訪問過程中,建立連線時,會先訪問本地dns,如果在...
愚公移山日記 26
學習進度 今天的主要學習成果是學習多程序,queue模組,佇列的基本用法如下 佇列是multiprocessing模組提供的乙個類 建立佇列 放值取值 import multiprocessing 建立佇列 佇列是multiprocessing模組提供的乙個類 multiprocessing.que...