网络编程(part11)--socket模块方法及socket套接字属性
生活随笔
收集整理的這篇文章主要介紹了
网络编程(part11)--socket模块方法及socket套接字属性
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
鄙人學習筆記
文章目錄
- socket模塊方法及socket套接字屬性
- 部分socket模塊方法
- 舉個例子
- 套接字屬性
- 舉個例子
- 寫個案例
socket模塊方法及socket套接字屬性
部分socket模塊方法
gethostname() #獲取計算機名 gethostbyname() #通過名稱,獲取主機ip地址 getservbyname() #獲取服務端口號 getservbyport() #獲取端口對應服務 inet_aton() #將IP轉換為bytes子串 inet_ntoa() # 將bytes子串轉換為IP地址舉個例子
代碼:
結果:
套接字屬性
sockfd.type #套接字類型 sockfd.family #套接字的網絡地址類型 sockfd.getsockname()#獲取套接字綁定地址(如果我們不綁定,則系統會自動獲取) sockfd.fileno() #獲取套接字的文件描述符(IO那個部分學了,不要忘了這里的網絡操作也是IO操作) sockfd.getpeername() #獲取連接套接字客戶端地址(必須是連接套接字對象,才能調用這個函數,否則會報錯) sockfd.setsockopt(level,option,value) """ 功能:設置套接字選項(使現有套接字的功能更加豐富)參數: level 選項類別(我們常用的大類:SOL_SOCKET)option 具體選項內容value 選項值(期望值)""" sockfd.getsockopt(level,option) #獲取套接字選項值備注1:我們通過socket()生成套接字對象, 那么我們調用的send()、recv()、listen()、accept()也是套接字屬性(屬性分為:屬性變量/屬性方法,或者稱為實例變量/實例方法)
備注2:套接字選項分為幾個大類,幾個大類下還有很多小項,每個小項下還有具體的值。我們對每一類套接字的設置,都可能改變套接字的原有屬性行為。
備注3:套接字大類SOL_SOCKET下的幾個小類(具體選項內容):
舉個例子
代碼1:
結果1:
代碼2(自己不綁定IP地址時):
結果2:
代碼3(自己綁定IP地址時):
結果3:
代碼4(設置套接字類別):
結果我就不演示了,若有疑問自己學習。
寫個案例
要求:發送端讀取圖片,然后將圖片發送給,接收端,接收端再將接收的數據寫入新的文件中。
首先,我們瞧一瞧,我們的圖片TX.jpg:
真好看呀~
我們再看一下項目下的文件列表:
OK,現在正式開始敲代碼。
發送端代碼:
from socket import *s = socket() s.connect(('127.0.0.1',8888))f = open('TX.jpg','rb')#讀取內容進行發送 while True:data = f.read(1024) # 字節串if not data:breaks.send(data)f.close() s.close()接收端代碼:
from socket import *s = socket() s.bind(('127.0.0.1',8888)) s.listen(5)print("等待連接......") c,addr = s.accept() print("Connect from",addr)f = open('new_TX.jpg','wb')#接受內容寫入文件 while True:data = c.recv(1024) #字節串if not data:breakf.write(data)f.close() c.close() s.close()print("已關閉")先運行接收端(服務端), 再運行發送端(客戶端),運行結果:
接收端運行結果:
再看一下文件列表:
成功創建new_TX.jpg文件啦~
再打開一下new_TX.jpg檢查一下:
Perfect!
總結
以上是生活随笔為你收集整理的网络编程(part11)--socket模块方法及socket套接字属性的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 胖虎小夫情侣头像一对
- 下一篇: 网络编程(part12)--HTTP传输