<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
前言:
Python3 提供了兩個級別存取的網路服務:
Socket又稱"通訊端",應用程式通常通過"通訊端"向網路發出請求或者應答網路請求,使主機間或者一臺計算機上的程序間可以通訊。
Python 中,我們使用 socket 模組的 socket 函數來建立一個 socket 物件。語法格式如下:
socket.socket ( family ,type ,proto)
引數;
import socket server=socket.socket(socket.AF_INET,socket.SOCK_STREAM) #建立socket物件,面向連線的 server.bind(("127.0.0.1",9999)) #繫結主機名和埠號 server.listen(10) #設定最大連線數,超過後排隊 clientsock,addr=server.accept() #建立與使用者端的連線,返回(socket object, address info)元組物件 print("addr=%s %s"%(addr,type(addr))) print("使用者端ip地址為:%s 埠號為:%s"%addr) clientsock.send("歡迎來到伺服器端".encode('utf-8')) #python3要求傳送byte型的資料,所以我們將它以utf-8的形式轉換為bytes型別的 msg=clientsock.recv(1024) #接收使用者端發來的訊息,msg2為bytes型別的資料 print(msg.decode('utf-8')) #我們將bytes型別資料轉換成str字元型的資料,以utf-8的形式 clientsock.close()
import socket client=socket.socket(socket.AF_INET,socket.SOCK_STREAM) client.connect(("127.0.0.1",9999)) #connect函數接收元組型資料 msg=client.recv(1024) #接收從伺服器發來的訊息,為bytes型別的資料,大小為1024位元組的緩衝區 print(msg.decode('utf-8')) #我們轉化為str字串型別的資料,以utf-8的形式 client.send("使用者端到此一遊".encode('utf-8')) #python3要求傳送bytes型別的資料,所以我們得將它轉換 client.close()
import socket a=socket.gethostname() #獲得本機的主機名,返回str型資料 print(a,type(a)) b=socket.gethostbyname(a) #根據主機名獲取ip地址,返回str型資料,也可以是網路上的域名 print(b,type(b)) c=socket.gethostbyaddr(b) #通過ip獲得該主機的一些資訊,返回tuple元組型資料 print(c,type(c)) ############################################# Win-10 <class 'str'> 192.168.56.1 <class 'str'> ('bogon', [], ['192.168.56.1']) <class 'tuple'>
函數 | 描述 |
伺服器端通訊端 | |
s.bind() | 繫結地址(host,port)到通訊端, 在AF_INET下,以元組(host,port)的形式表示地址。 |
s.listen() | 開始TCP監聽。backlog指定在拒絕連線之前,作業系統可以掛起的最大連線數量。該值至少為1,大部分應用程式設為5就可以了。 |
s.accept() | 被動接受TCP使用者端連線,(阻塞式)等待連線的到來 |
使用者端通訊端 | |
s.connect() | 主動初始化TCP伺服器連線,。一般address的格式為元組(hostname,port),如果連線出錯,返回socket.error錯誤。 |
s.connect_ex() | connect()函數的擴充套件版本,出錯時返回出錯碼,而不是丟擲異常 |
公共用途的通訊端函數 | |
s.recv() | 接收TCP資料,資料以字串形式返回,bufsize指定要接收的最巨量資料量。flag提供有關訊息的其他資訊,通常可以忽略。 |
s.send() | 傳送TCP資料,將string中的資料傳送到連線的通訊端。返回值是要傳送的位元組數量,該數量可能小於string的位元組大小。 |
s.sendall() | 完整傳送TCP資料,完整傳送TCP資料。將string中的資料傳送到連線的通訊端,但在返回之前會嘗試傳送所有資料。成功返回None,失敗則丟擲異常。 |
s.recvfrom() | 接收UDP資料,與recv()類似,但返回值是(data,address)。其中data是包含接收資料的字串,address是傳送資料的通訊端地址。 |
s.sendto() | 傳送UDP資料,將資料傳送到通訊端,address是形式為(ipaddr,port)的元組,指定遠端地址。返回值是傳送的位元組數。 |
s.close() | 關閉通訊端 |
s.getpeername() | 返回連線通訊端的遠端地址。返回值通常是元組(ipaddr,port)。 |
s.getsockname() | 返回通訊端自己的地址。通常是一個元組(ipaddr,port) |
s.setsockopt(level,optname,value) | 設定給定通訊端選項的值。 |
s.getsockopt(level,optname[.buflen]) | 返回通訊端選項的值。 |
s.settimeout(timeout) | 設定通訊端操作的超時期,timeout是一個浮點數,單位是秒。值為None表示沒有超時期。一般,超時期應該在剛建立通訊端時設定,因為它們可能用於連線的操作(如connect()) |
s.gettimeout() | 返回當前超時期的值,單位是秒,如果沒有設定超時期,則返回None。 |
s.fileno() | 返回通訊端的檔案描述符。 |
s.setblocking(flag) | 如果flag為0,則將通訊端設為非阻塞模式,否則將通訊端設為阻塞模式(預設值)。非阻塞模式下,如果呼叫recv()沒有發現任何資料,或send()呼叫無法立即傳送資料,那麼將引起socket.error異常。 |
s.makefile() | 建立一個與該通訊端相關連的檔案 |
以下是 Python 網路程式設計的一些重要模組:
協定 | 功能用處 | 埠號 | Python 模組 |
HTTP | 網頁存取 | 80 | httplib, urllib, xmlrpclib |
NNTP | 閱讀和張貼新聞文章,俗稱為"貼文" | 119 | nntplib |
FTP | 檔案傳輸 | 20 | ftplib, urllib |
SMTP | 傳送郵件 | 25 | smtplib |
POP3 | 接收郵件 | 110 | poplib |
IMAP4 | 獲取郵件 | 143 | imaplib |
Telnet | 命令列 | 23 | telnetlib |
Gopher | 資訊查詢 | 70 | gopherlib, urllib |
到此這篇關於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