<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
socket
被翻譯成通訊端,儘管有些人詬病,但我覺得還挺貼切的。其功能是提供低階別的網路服務,最常用的就是根據IP來傳輸資料。
所謂傳輸,就要有兩個“端”,首先做一個伺服器端
import socket s = socket.socket() host = socket.gethostname() #本機地址 port = 12345 #埠 s.bind((host,port)) #繫結埠 s.listen(3) #開始監聽,最多支援三個連結 while True: c, addr = s.accept() #等待連線 print("Linked @ Addr",addr) break #下面為傳送命令 while True: data = input("input data:") c.send(data.encode("utf8")) if data=="exit": c.close() break
需要注意的是,send需要傳送的內容是二進位制碼,故而通過encode
和decode
來編解碼。最後如果輸入exit則退出。
然後寫一個使用者端
import socket s = socket.socket() host = socket.gethostname() port = 12345 s.connect((host,port)) while True: data = s.recv(1024).decode("utf8") if data!=b'': print("receive data:", data) # 當接收到exit時關閉埠,退出迴圈 if data[:4]=="exit": s.close() break
執行之後,伺服器端和使用者端的輸入輸出分別為
#伺服器端 Linked @ Addr ('192.168.1.113', 9953) input data:hello world 11 input data:who are you 11 input data:can u speak chinese? 20 input data:exit #使用者端 receive data: hello world receive data: who are you receive data: can u speak chinese? receive data: exit
在上例中,通過socket.socket
建立了一個socket物件,其完整的建構函式為
socket.socket(family=AF_INET, type=SOCK_STREAM,proto=0,fileno=None)
其中,family表示通訊端的地址族,主要包括三類
地址族 | AF_INET | AF_INET6 | AF_UNIX |
---|---|---|---|
協定來源 | IPv4 | IPv6 | UNIX |
在建立串列埠時,可以通過或運算|同時選擇多個地址族。
type為通訊端型別,比較常用的有兩種:
SOCK_STREAM
,為流式通訊端,特點是傳輸與接收順序相同,安全。SOCK_DGRAM
,為資料包格式通訊端,特點是快、無順序、可能丟失proto為協定號,一般為0,當協定族為AF_CAN時,協定應為CAN_RAW, CAN_BCM, CAN_ISOTP
或 CAN_J1939
。
fileno代表一個建立socket
的檔案。
儘管建構函式並無宣告使用者端與伺服器端的引數,但從功能來看,二者所能夠呼叫的成員應該並不完全相同。
其中,bind,listen,accept這三個方法為伺服器端的專有方法,其功能分別為
相應地,使用者端也有兩個專用的方法:
接下來是使用者端和伺服器端均可使用的方法,其中最關鍵的就是傳送send和接收recv。
其中,與傳送相關的函數有:
在Windows中可用的接收相關函數有兩組,其中bufsize表示接收資料的最大位元組數。
返回資料 | 返回資料+接收端地址 | |
---|---|---|
不寫入緩衝區 | recv(bufsize) | recvfrom(bufsize) |
寫入緩衝區buf | recv_into(buf,bufsize) | recvfrom_into(buf,bufsize) |
get-set
是很多模組中都會出現的函數名稱,前者代表獲取某種引數,後者代表設定某些引數,一般後者的輸入為前者的輸出。
通訊端中止或者關閉的方法有下面幾種:
close()
關閉通訊端的檔案描述符detach()
關閉通訊端物件,但並不關閉檔案描述符shutdown(how)可以部分關閉通訊端的連線,其中how為:
到此這篇關於python通訊端socket通訊的文章就介紹到這了,更多相關python socket通訊內容請搜尋it145.com以前的文章或繼續瀏覽下面的相關文章希望大家以後多多支援it145.com!
相關文章
<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
综合看Anker超能充系列的性价比很高,并且与不仅和iPhone12/苹果<em>Mac</em>Book很配,而且适合多设备充电需求的日常使用或差旅场景,不管是安卓还是Switch同样也能用得上它,希望这次分享能给准备购入充电器的小伙伴们有所
2021-06-01 09:31:42
除了L4WUDU与吴亦凡已经多次共事,成为了明面上的厂牌成员,吴亦凡还曾带领20XXCLUB全队参加2020年的一场音乐节,这也是20XXCLUB首次全员合照,王嗣尧Turbo、陈彦希Regi、<em>Mac</em> Ova Seas、林渝植等人全部出场。然而让
2021-06-01 09:31:34
目前应用IPFS的机构:1 谷歌<em>浏览器</em>支持IPFS分布式协议 2 万维网 (历史档案博物馆)数据库 3 火狐<em>浏览器</em>支持 IPFS分布式协议 4 EOS 等数字货币数据存储 5 美国国会图书馆,历史资料永久保存在 IPFS 6 加
2021-06-01 09:31:24
开拓者的车机是兼容苹果和<em>安卓</em>,虽然我不怎么用,但确实兼顾了我家人的很多需求:副驾的门板还配有解锁开关,有的时候老婆开车,下车的时候偶尔会忘记解锁,我在副驾驶可以自己开门:第二排设计很好,不仅配置了一个很大的
2021-06-01 09:30:48
不仅是<em>安卓</em>手机,苹果手机的降价力度也是前所未有了,iPhone12也“跳水价”了,发布价是6799元,如今已经跌至5308元,降价幅度超过1400元,最新定价确认了。iPhone12是苹果首款5G手机,同时也是全球首款5nm芯片的智能机,它
2021-06-01 09:30:45