日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 >

python网络套接字_Python网络编程 Python套接字编程

發(fā)布時間:2023/12/19 30 豆豆
生活随笔 收集整理的這篇文章主要介紹了 python网络套接字_Python网络编程 Python套接字编程 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

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()

#用戶終止程序時關(guān)閉連接

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

客戶端運行截圖

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

總結(jié)

以上是生活随笔為你收集整理的python网络套接字_Python网络编程 Python套接字编程的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。