亚洲av成人无遮挡网站在线观看,少妇性bbb搡bbb爽爽爽,亚洲av日韩精品久久久久久,兔费看少妇性l交大片免费,无码少妇一区二区三区

  免費(fèi)注冊(cè) 查看新帖 |

Chinaunix

  平臺(tái) 論壇 博客 文庫(kù)
最近訪問(wèn)板塊 發(fā)新帖
查看: 3532 | 回復(fù): 0
打印 上一主題 下一主題

[轉(zhuǎn)]基本的 Python socket 模塊 [復(fù)制鏈接]

論壇徽章:
0
跳轉(zhuǎn)到指定樓層
1 [收藏(0)] [報(bào)告]
發(fā)表于 2009-12-21 19:46 |只看該作者 |倒序?yàn)g覽

基本的 Python socket 模塊
Python 提供了兩個(gè)基本的 socket 模塊。第一個(gè)是 Socket,它提供了標(biāo)準(zhǔn)的 BSD Sockets API。第二個(gè)是
SocketServer
,它提供了服務(wù)器中心類,可以簡(jiǎn)化網(wǎng)絡(luò)服務(wù)器的開(kāi)發(fā)。Python 使用一種異步的方式來(lái)實(shí)現(xiàn)這種功能,您可以提供一些插件類來(lái)處理服務(wù)器中應(yīng)用程序特有的任務(wù)。表 1 列出了本節(jié)所涉及的類和模塊。

  • 表1. Python 類和模塊

類/模塊
說(shuō)明
Socket
低層網(wǎng)絡(luò)接口(每個(gè) BSD API)
SocketServer
提供簡(jiǎn)化網(wǎng)絡(luò)服務(wù)器開(kāi)發(fā)的類
讓我們來(lái)看一下這些模塊,以便理解它們是如何工作的。
socket 模塊
Socket 模塊提供了 UNIX 程序員所熟悉的基本網(wǎng)絡(luò)服務(wù)(也稱為 BSD API)。這個(gè)模塊中提供了在構(gòu)建 socket 服務(wù)器和客戶機(jī)時(shí)所需要的所有功能。
這個(gè) API 與標(biāo)準(zhǔn)的 C API 之間的區(qū)別在于它是面向?qū)ο蟮。在C中,socket描述符是從socket調(diào)用中獲得的,然后會(huì)作為一個(gè)參數(shù)傳遞給BSD API函數(shù)。在Python中,socket 方法會(huì)向應(yīng)用socket方法的對(duì)象返回一個(gè)socket對(duì)象。表2給出了幾個(gè)類方法,表3顯示了一部分實(shí)例方法。

  • 表2. Socket 模塊的類方法

類方法
說(shuō)明
Socket
低層網(wǎng)絡(luò)接口(每個(gè) BSD API)
socket.socket(family, type)
創(chuàng)建并返回一個(gè)新的 socket 對(duì)象
socket.getfqdn(name)
將使用點(diǎn)號(hào)分隔的 IP 地址字符串轉(zhuǎn)換成一個(gè)完整的域名
socket.gethostbyname(hostname)
將主機(jī)名解析為一個(gè)使用點(diǎn)號(hào)分隔的 IP 地址字符串
socket.fromfd(fd, family, type)
從現(xiàn)有的文件描述符創(chuàng)建一個(gè) socket 對(duì)象

  • 表3. Socket 模塊的實(shí)例方法

實(shí)例方法
說(shuō)明
sock.bind( (adrs, port) )
將 socket 綁定到一個(gè)地址和端口上
sock.accept()
返回一個(gè)客戶機(jī) socket(帶有客戶機(jī)端的地址信息)
sock.listen(backlog)
將 socket 設(shè)置成監(jiān)聽(tīng)模式,能夠監(jiān)聽(tīng) backlog 外來(lái)的連接請(qǐng)求
sock.connect( (adrs, port) )
將 socket 連接到定義的主機(jī)和端口上
sock.recv( buflen[, flags] )
從 socket 中接收數(shù)據(jù),最多 buflen 個(gè)字符
sock.recvfrom( buflen[, flags] )
從 socket 中接收數(shù)據(jù),最多 buflen 個(gè)字符,同時(shí)返回?cái)?shù)據(jù)來(lái)源的遠(yuǎn)程主機(jī)和端口號(hào)
sock.send( data[, flags] )
通過(guò) socket 發(fā)送數(shù)據(jù)
sock.sendto( data[, flags], addr )
通過(guò) socket 發(fā)送數(shù)據(jù)
sock.close()
關(guān)閉 socket
sock.getsockopt( lvl, optname )
獲得指定 socket 選項(xiàng)的值
sock.setsockopt( lvl, optname, val )
設(shè)置指定 socket 選項(xiàng)的值
類方法和實(shí)例方法之間的區(qū)別在于,實(shí)例方法需要有一個(gè)socket實(shí)例(從socket返回)才能執(zhí)行,而類方法則不需要。
SocketServer 模塊
SocketServer
模塊是一個(gè)十分有用的模塊,它可以簡(jiǎn)化socket服務(wù)器的開(kāi)發(fā)。有關(guān)這個(gè)模塊的使用的討論已經(jīng)遠(yuǎn)遠(yuǎn)超出了本教程的范圍,但是我將展示一下它的基本用法,然后您可以參閱參考資料一節(jié)中給出的鏈接。
考慮清單 2 中給出的例子。此處,我們實(shí)現(xiàn)了一個(gè)簡(jiǎn)單的 “Hello World” 服務(wù)器,當(dāng)客戶機(jī)連接它時(shí),它就會(huì)顯示這樣一條消息。我首先創(chuàng)建一個(gè)請(qǐng)求處理程序,它繼承了
SocketServer
.
StreamRequestHandler
類。我們定義了一個(gè)名為 handle 的方法,它處理服務(wù)器的請(qǐng)求。服務(wù)器所做的每件事情都必須在這個(gè)函數(shù)的上下文中進(jìn)行處理(最后,關(guān)閉這個(gè) socket)。這個(gè)過(guò)程的工作方式非常簡(jiǎn)單,但是您可以使用這個(gè)類來(lái)實(shí)現(xiàn)一個(gè)簡(jiǎn)單的 HTTP 服務(wù)器。在 handle 方法中,我們打一個(gè)招呼就退出了。
現(xiàn)在連接處理程序已經(jīng)準(zhǔn)備就緒了,剩下的工作是創(chuàng)建 socket 服務(wù)器。我們使用了
SocketServer
.TCPServer 類,并提供了地址和端口號(hào)(要將服務(wù)器綁定到哪個(gè)端口上)以及請(qǐng)求處理方法。結(jié)果是一個(gè) TCPServer 對(duì)象。調(diào)用 serve_forever 方法啟動(dòng)服務(wù)器,并使其對(duì)這個(gè)連接可用。


  • 清單 2. 用
    SocketServer
    模塊實(shí)現(xiàn)一個(gè)簡(jiǎn)單的服務(wù)器

Toggle line numbers

Toggle line numbers
  1 import SocketServer
2
3 class hwRequestHandler( SocketServer.StreamRequestHandler ):
4  def handle( self ):
5  self.wfile.write("Hello World!\n")
6
7
8 server = SocketServer.TCPServer( ("", 2525), hwRequestHandler )
9 server.serve_forever()
就是這樣!Python 允許這種機(jī)制的任何變種,包括 UDPServers 以及派生進(jìn)程和線程的服務(wù)器。請(qǐng)參閱 參考資料一節(jié)中更多信息的鏈接。


本文來(lái)自ChinaUnix博客,如果查看原文請(qǐng)點(diǎn):http://blog.chinaunix.net/u2/60332/showart_2127355.html
您需要登錄后才可以回帖 登錄 | 注冊(cè)

本版積分規(guī)則 發(fā)表回復(fù)

  

北京盛拓優(yōu)訊信息技術(shù)有限公司. 版權(quán)所有 京ICP備16024965號(hào)-6 北京市公安局海淀分局網(wǎng)監(jiān)中心備案編號(hào):11010802020122 niuxiaotong@pcpop.com 17352615567
未成年舉報(bào)專區(qū)
中國(guó)互聯(lián)網(wǎng)協(xié)會(huì)會(huì)員  聯(lián)系我們:huangweiwei@itpub.net
感謝所有關(guān)心和支持過(guò)ChinaUnix的朋友們 轉(zhuǎn)載本站內(nèi)容請(qǐng)注明原作者名及出處

清除 Cookies - ChinaUnix - Archiver - WAP - TOP