国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > Python > 正文

Python socket編程實例詳解

2020-02-23 01:25:33
字體:
來源:轉載
供稿:網友

本文實例形式較為詳細的講述了Python socket編程。分享給大家供大家參考。具體如下:

代碼如下:sock=socket.socket(socket.AF_INET,socket.SOCK_STREAM)
上面的代碼創建了一個socket對象。type參數代表套接字類型,可為SOCK_STREAM(流套接字)和SOCK_DGRAM(數據報套接字)。AF_INET表示創建的是ip v4的類型。
代碼如下:socket(address_family,type,protocol_type):

上面三個參數的含義是:

address_family指明要建立哪一類socket。最常用的當然是ip協議,AF_INET。在unix系統中,AF_UNIX也是比較常用的,用于建立unix系統中的進程間通信。

type用于指定通信類型。通常是建立面向連接的流通信。SOCKET_DGRAM是報文通信。如果address_family設置的是AF_INET,那么對應的是TCP和UDP。

protocol用于指定協議類型。這個參數是可選的。在建立tcp或者是udp連接的時候他們通常都是0。如果第一個參數是AF_INET,那么這個參數表示是ip包中的protocol字段。

【UDP本來就不區分server和client。所有節點都是對等的】

第二步是將socket綁定到指定的地址:
代碼如下:sock.bind(('localhost',7556))
第三步是使用listen方法監聽請求:【listen方法中的參數指明可接受的最大連接數】
代碼如下:sock.listen(5)
第四步是不斷接收請求:收到連接請求后,這些請求需要排隊,如果隊列滿,就拒絕請求。
代碼如下:connection,address = sock.accept()
accept方法返回一個含有兩個元素的 元組(connection,address)。第一個元素connection是新的socket對象,服務器必須通過它與客戶通信;第二個元素 address是客戶的Internet地址。
第五步是處理階段,服務器和客戶端通過send和recv方法通信(傳輸數據)。

如果send成功了,那么對方的緩沖區已經有你發送的數據了。
#調用recv 時,服務器必須指定一個整數,它對應于可通過本次方法調用來接收的最大數據量。recv方法在接收數據時會進入“blocked”狀態,最后返回一個字符 串,用它表示收到的數據。如果發送的數據量超過了recv所允許的,數據會被截短。多余的數據將緩沖于接收端。以后調用recv時,多余的數據會從緩沖區 刪除(以及自上次調用recv以來,客戶可能發送的其它任何數據)。

connection.settimeout(5)buf = connection.recv(1024)

具體處理如下:

      if buf == '1':  connection.send('welcome to python server!')else:  connection.send('please go out!')

使用send發送數據給客戶端。客戶端使用recv來接收數據。

import socketsock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)sock.connect(('localhost',7556))import timetime.sleep(2)sock.send('1')print sock.recv(1024)sock.close()
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 呼玛县| 旺苍县| 扎鲁特旗| 建水县| 马龙县| 石河子市| 顺义区| 花垣县| 浪卡子县| 江孜县| 延边| 库伦旗| 黑河市| 新河县| 晋宁县| 宁明县| 新泰市| 馆陶县| 广河县| 衡东县| 城步| 无锡市| 陆河县| 大兴区| 襄垣县| 沁水县| 车致| 满洲里市| 琼中| 永登县| 郁南县| 宁海县| 古田县| 文登市| 河北区| 永兴县| 陕西省| 汾西县| 博白县| 当雄县| 华坪县|