Python socket編程在具體應(yīng)用中前兩個(gè)步驟的介紹
很多人對(duì)Python這一計(jì)算機(jī)語(yǔ)言都有所了解,而了解Python socket編程的人對(duì)它的相關(guān)實(shí)際操方案卻不是很了解,以下的文章就是對(duì)Python socket編程在實(shí)際相關(guān)應(yīng)用中的方案的介紹,希望你會(huì)有所收獲。
一、套接字
套接字是為特定網(wǎng)絡(luò)協(xié)議(例如TCP/IP,ICMP/IP,UDP/IP等)套件對(duì)上的網(wǎng)絡(luò)應(yīng)用程序提供者提供當(dāng)前可移植標(biāo)準(zhǔn)的對(duì)象。它們?cè)试S程序接受并進(jìn)行連接,如發(fā)送和接受數(shù)據(jù)。為了建立通信通道,網(wǎng)絡(luò)通信的每個(gè)端點(diǎn)擁有一個(gè)套接字對(duì)象極為重要。
套接字為BSD UNIX系統(tǒng)核心的一部分,而且他們也被許多其他類似UNIX的操作系統(tǒng)包括Linux所采納。許多非BSD UNIX系統(tǒng)(如ms-dos,windows,os/2,mac os及大部分主機(jī)環(huán)境)都以庫(kù)形式提供對(duì)套接字的支持。
三種***的套接字類型是:stream,datagram和raw。stream和datagram套接字可以直接與TCP協(xié)議進(jìn)行接口,而raw套接字則接口到IP協(xié)議。但套接字并不限于TCP/IP。
二、套接字模塊
套接字模塊是一個(gè)非常簡(jiǎn)單的基于對(duì)象的接口,它提供對(duì)低層BSD套接字樣式網(wǎng)絡(luò)的訪問(wèn)。使用該模塊可以實(shí)現(xiàn)客戶機(jī)和服務(wù)器套接字。要在python 中建立具有TCP和流套接字的簡(jiǎn)單服務(wù)器,需要使用socket模塊。利用該模塊包含的函數(shù)和類定義,可生成通過(guò)網(wǎng)絡(luò)通信的程序。一般來(lái)說(shuō),建立服務(wù)器連接需要六個(gè)步驟。
第1步是創(chuàng)建socket對(duì)象。調(diào)用socket構(gòu)造函數(shù)。
- socketsocket=socket.socket(familly,type)
family的值可以是AF_UNIX(Unix域,用于同一臺(tái)機(jī)器上的進(jìn)程間通訊),也可以是AF_INET(對(duì)于IPV4協(xié)議的TCP和 UDP),至于type參數(shù),SOCK_STREAM(流套接字)或者 SOCK_DGRAM(數(shù)據(jù)報(bào)文套接字),SOCK_RAW(raw套接字)。第2步則是將socket綁定(指派)到指定地址上,
- socket.bind(address)
address必須是一個(gè)雙元素元組,((host,port)),主機(jī)名或者ip地址+端口號(hào)。如果端口號(hào)正在被使用或者保留,或者主機(jī)名或ip地址錯(cuò)誤,則引發(fā)socke.error異常。第3步,綁定后,必須準(zhǔn)備好套接字,以便接受連接請(qǐng)求。
- socket.listen(backlog)
backlog指定了最多連接數(shù),至少為1,接到連接請(qǐng)求后,這些請(qǐng)求必須排隊(duì),如果隊(duì)列已滿,則拒絕請(qǐng)求。第4步,服務(wù)器套接字通過(guò)socket的accept方法等待客戶請(qǐng)求一個(gè)連接:
- connection,address=socket.accept()
調(diào)用accept方法時(shí),socket會(huì)進(jìn)入'waiting'(或阻塞)狀態(tài)。客戶請(qǐng)求連接時(shí),方法建立連接并返回服務(wù)器。accept方法返回一個(gè)含有倆個(gè)元素的元組,形如(connection,address)。***個(gè)元素(connection)是新的socket對(duì)象,服務(wù)器通過(guò)它與客戶通信;第二個(gè)元素(address)是客戶的internet地址。
【編輯推薦】
- 使用Python串口時(shí)應(yīng)用到的模塊有哪些
- PythonS60手機(jī)中搭建手機(jī)運(yùn)行平臺(tái)的五個(gè)步驟
- Python字符串中的mapping的功能介紹
- Python字符串在實(shí)際操作搜索與替換
- Python二維數(shù)組在創(chuàng)建過(guò)程中步驟詳解