最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Python網(wǎng)絡編程 Python套接字編程

 更新時間:2021年06月22日 09:34:31   作者:Lockeyi  
這篇文章主要為大家詳細介紹了Python網(wǎng)絡編程的相關資料,Python套接字編程,具有一定的參考價值,感興趣的小伙伴們可以參考一下

Python 提供了兩個級別訪問的網(wǎng)絡服務。

低級別的網(wǎng)絡服務支持基本的 Socket,它提供了標準的 BSD Sockets API,可以訪問底層操作系統(tǒng)Socket接口的全部方法。
高級別的網(wǎng)絡服務模塊 SocketServer, 它提供了服務器中心類,可以簡化網(wǎng)絡服務器的開發(fā)。

什么是 Socket?

Socket又稱”套接字”,應用程序通常通過”套接字”向網(wǎng)絡發(fā)出請求或者應答網(wǎng)絡請求,使主機間或者一臺計算機上的進程間可以通訊。

socket()函數(shù)

Python 中,我們用 socket()函數(shù)來創(chuàng)建套接字,語法格式如下:

socket.socket([family[, type[, proto]]])

參數(shù)

family: 套接字家族可以使AF_UNIX或者AF_INET
type: 套接字類型可以根據(jù)是面向連接的還是非連接分為SOCK_STREAM或SOCK_DGRAM
protocol: 一般不填默認為0.

socket實現(xiàn)服務端與客戶端的簡單通信(模擬ssh的部分功能以及自動應答)

server端的簡單程序示例:

#!/usr/bin/env python
#coding:utf-8
'''
file:server.py
date:9/8/17 3:43 PM
author:lockey
email:lockey@123.com
desc:socket編程服務器端,python3.6.2
'''
import re
import socket,time,os
s = socket.socket()   # 創(chuàng)建 socket 對象
host = '127.0.0.1'#socket.gethostname() # 獲取本地主機名
port = 9999    # 設置端口
s.bind((host, port))  # 綁定端口
s.listen(5)     # 等待客戶端連接
while True:
 conn, addr = s.accept()  # 建立客戶端連接。
 print('conneted address:'.decode('utf-8'), addr)#顯示連接到服務器的客戶端的地址
 while True:
  data = conn.recv(1024)
  #接收到的客戶端的請求或者返回
  if not data:
  #當返回信息為空或者請求為空時斷開客戶端連接
   print('Connection closed!')
   break;
 data = data.decode('utf-8')
 #以下前三個條件都是設置的自動檢測應答,最后一個是根據(jù)輸入的內(nèi)容進行的命令執(zhí)行,并將結(jié)果返回給客戶端
  if re.findall(r'who',data):
   reply = 'I am lockey'.encode('utf-8')
  elif re.findall(r'gender',data):
   reply = 'A boy'.encode('utf-8')
  elif re.findall(r'age',data):
   reply = '23'.encode('utf-8')
  else:
   print('execute com:',data)
   cmd_res = os.popen(data).read()
   if not cmd_res:
   #對于命令的執(zhí)行如果沒有返回值的話就給客戶端發(fā)送一條信息
    conn.send('No response'.encode('utf-8'))
    continue
   reply = cmd_res.encode('utf-8')
 conn.send(reply)
 #將結(jié)果發(fā)送給客戶端

client端的簡單實現(xiàn):

#!/usr/bin/env python
#coding:utf-8
'''
file:client.py
date:9/8/17 3:43 PM
author:lockey
email:lockey@123.com
desc:socket編程客戶端,python3.6.2
'''
import socket,time    # 導入 socket 模塊

s = socket.socket()   # 創(chuàng)建 socket 對象
host = '127.0.0.1'#socket.gethostname() # 獲取本地主機名
port = 9999    # 設置端口好

s.connect((host, port))
while True:
 cmd = input("lockey#")
 #用戶輸入
 if len(cmd) == 0:continue
 #如果用戶未輸入內(nèi)容則繼續(xù)下一次輸入
 s.send(cmd.encode('utf-8'))
 #將用戶輸入的內(nèi)容發(fā)送給客戶端等待結(jié)果
 result = s.recv(1024)
 if not result:
 #如果服務端沒有返回結(jié)果則繼續(xù)下一次輸入
  continue
 print(result.decode('utf-8'))
 #如果服務端有返回則打印結(jié)果
s.close()
#用戶終止程序時關閉連接

服務器端運行結(jié)果

客戶端運行截圖

以上就是本文的全部內(nèi)容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。

相關文章

最新評論

玉屏| 山阳县| 扎囊县| 绩溪县| 凉山| 长武县| 万宁市| 西城区| 万盛区| 南陵县| 荃湾区| 榆社县| 乌鲁木齐市| 黄龙县| 平阴县| 原阳县| 府谷县| 通州区| 拉萨市| 广灵县| 烟台市| 红原县| 广安市| 松潘县| 昆山市| 上蔡县| 兴安盟| 乌兰县| 卓尼县| 元谋县| 安多县| 涿鹿县| 瓮安县| 会昌县| 博客| 呈贡县| 四会市| 原阳县| 乌苏市| 汕尾市| 青冈县|