成人性生交大片免费看视频r_亚洲综合极品香蕉久久网_在线视频免费观看一区_亚洲精品亚洲人成人网在线播放_国产精品毛片av_久久久久国产精品www_亚洲国产一区二区三区在线播_日韩一区二区三区四区区区_亚洲精品国产无套在线观_国产免费www

主頁 > 知識庫 > Python Socket編程詳解

Python Socket編程詳解

熱門標(biāo)簽:南京銷售外呼系統(tǒng)軟件 315電話機(jī)器人廣告 蓋州市地圖標(biāo)注 地圖標(biāo)注的意義點 浙江電銷卡外呼系統(tǒng)好用嗎 地圖制圖標(biāo)注位置改變是移位嗎 上海機(jī)器人外呼系統(tǒng)哪家好 房產(chǎn)電銷外呼系統(tǒng) 地圖標(biāo)注微信發(fā)送位置不顯示

背景

關(guān)于Python Socket編程,首先需要了解幾個計算機(jī)網(wǎng)絡(luò)的知識,通過以下的幾個問題,有助于更好的理解Socket編程的意義,以及整個框架方面的知識:

TCP和UDP協(xié)議本質(zhì)上的區(qū)別?

TCP協(xié)議,面向連接,可靠,基于字節(jié)流的傳輸層通信協(xié)議;UDP協(xié)議無連接,不可靠,基于數(shù)據(jù)包的傳輸層協(xié)議。

TCP協(xié)議在建立連接的過程需要經(jīng)歷三次握手,斷開連接則需要經(jīng)歷四次揮手,而這建立連接的過程增加了傳輸過程中的安全性。
而建立連接的過程則會消耗系統(tǒng)的資源,消耗更多的時間,而相比較UDP協(xié)議傳輸過程則不會出現(xiàn)這種問題。

總結(jié)來講,基于TCP協(xié)議傳輸,需要不斷的確認(rèn)對方是否收到信息,從而建立連接(確認(rèn)過程次數(shù)有限制,即三次握手),UDP協(xié)議傳輸則
不需要確認(rèn)接收端是否收到信息,只需要將信息發(fā)給對方。

TCP/IP協(xié)議棧、HTTP協(xié)議、Socket之間的區(qū)別和聯(lián)系?

TCP/IP協(xié)議棧就是一系列網(wǎng)絡(luò)協(xié)議,可以分為四層模型來分析:應(yīng)用層、傳輸層、網(wǎng)絡(luò)層、鏈路層;

HTTP協(xié)議(超文本傳輸協(xié)議)就是在這一協(xié)議棧中的應(yīng)用層協(xié)議;HTTP協(xié)議簡單來說,它的作用就是規(guī)范數(shù)據(jù)的格式,讓程序能夠方便的識別,并且收發(fā)雙方都需要遵循同樣的協(xié)議格式進(jìn)行數(shù)據(jù)傳輸。(應(yīng)用層的協(xié)議也和HTTP協(xié)議的作用類似,不一樣的是定義不同的數(shù)據(jù)格式。)

Socket可以理解為TCP/IP協(xié)議棧提供的對外的操作接口,即應(yīng)用層通過網(wǎng)絡(luò)協(xié)議進(jìn)行通信的接口。Socket可以使用不同的網(wǎng)絡(luò)協(xié)議進(jìn)行端對端的通信;

TCP Socket服務(wù)器的通信過程?

Server端:

建立連接(socket()函數(shù)創(chuàng)建socket描述符、bind()函數(shù)綁定特定的監(jiān)聽地址(ip+port)、listen()函數(shù)監(jiān)聽socket、accept()阻塞等待客戶端連接)

數(shù)據(jù)交互(read()函數(shù)阻塞等待客戶端發(fā)送數(shù)據(jù)、write()函數(shù)發(fā)送給客戶端數(shù)據(jù))

Client端:

建立連接(socket()函數(shù)創(chuàng)建socket描述符、connect()函數(shù)向指定的監(jiān)聽地址發(fā)送連接請求)

數(shù)據(jù)交互(wirte()函數(shù)發(fā)送服務(wù)端數(shù)據(jù)、read()函數(shù)足阻塞等待接受服務(wù)端發(fā)送的數(shù)據(jù))

socket和websocket之間的聯(lián)系?

webosocket是一種通信協(xié)議,不同于HTTP請求,客戶端請求服務(wù)端資源,服務(wù)端響應(yīng)的通信過程;websocket允許服務(wù)端主動
向客戶端推送消息,同時做到客戶端和服務(wù)端雙向通訊的協(xié)議。(具體底層原理有待后面實踐,暫時未接觸)

HTTP,WSGI協(xié)議的聯(lián)系和區(qū)別?

HTTP協(xié)議(超文本傳輸協(xié)議),屬于TCP/IP協(xié)議棧中應(yīng)用層的協(xié)議。用于規(guī)范傳輸數(shù)據(jù)的格式,是一種客戶端和服務(wù)端傳輸?shù)囊?guī)則。

WSGI協(xié)議則是Python定義的Web服務(wù)器和框架程序通信的接口規(guī)則。兩者聯(lián)系不大,強(qiáng)行說的話,Python框架程序主要處理的是HTTP請求。

(后期可以實現(xiàn)一個WSGI協(xié)議的Python框架,用于處理HTTP請求的實驗。)

主流Web框架,異步Web框架?

主流Web框架:Django、Flask

異步Web框架:Tornado(內(nèi)置異步模塊)、Snaic(Python自帶asyncio)、FastAPI(基于Starlette庫) 、aiohttp(基于asyncio)

asyncio,aiohttp之間的聯(lián)系?(異步編程)

asyncio是一個異步IO庫,aiohttp就是基于asyncio的異步HTTP框架(支持客戶端/服務(wù)端)

代碼設(shè)計

Python提供了基本的socket模塊:

  1. socket模塊;提供了標(biāo)準(zhǔn)的BSD Sockets API;
  2. socketserver模塊:提供了服務(wù)器中心類,簡化服務(wù)器的開發(fā);

TCP Socket服務(wù)端

socket模塊:

# -*- coding: utf-8 -*-
from socket import socket, AF_INET, SOCK_STREAM

def echo_handler(sock ,address):
	print("Get Connection from address:", address)

	while True:
		response = sock.recv(8192)
		if not response:
			break
		print(f"Got {response}")
		sock.sendall(response)

def echo_server(address, back_log=5):
	sock = socket(AF_INET, SOCK_STREAM)
	sock.bind(address)
	sock.listen(back_log)

	while True:
		sock_client, address = sock.accept()
		echo_handler(sock_client, address)

if __name__ == "__main__":
	echo_server(('localhost', 5000))

代碼詳解:

  • 創(chuàng)建一個基于IPV4和TCP協(xié)議的Socket,這里AF_INET指的是使用IPV4協(xié)議,SOCK_STREAM指定使用面向流的TCP協(xié)議,綁定監(jiān)聽端口,設(shè)置等待連接的最大數(shù)量
  • 創(chuàng)建一個永久循環(huán),獲取客戶端請求的連接,accept()會等待并返回一個客戶端的連接;
  • 連接建立后,等待客戶端數(shù)據(jù),接受完客戶端數(shù)據(jù),然后返回數(shù)據(jù)給客戶端,最后關(guān)閉連接

存在的問題:當(dāng)出現(xiàn)多個客戶端請求時,由于是單個線程會發(fā)生阻塞的情況,所以如果需要多線程處理多個客戶端請求,可以這樣改;

from threading import Thread

while True:
        client_sock, address = sock.accept()
        thread = Thread(target=echo_handler, args=(client_sock, address))
        thread.start()

這樣的話,就會在每個客戶端請求的時候,生成一個子線程然后處理請求;
(但是存在一個問題:當(dāng)突然大量請求連接,消耗系統(tǒng)資源達(dá)到上限后,很可能造成程序無法處理后續(xù)請求。)

socketserver模塊:

from socketserver import BaseRequestHandler, TCPServer

class EchoHandler(BaseRequestHandler):
    def handle(self):
        print("Got Connection From: %s" % str(self.client_address))
        while True:
            msg = self.request.recv(8192)
            if not msg:
                break
            self.request.send(msg)

if __name__ == "__main__":
    server = TCPServer(("", 5000), EchoHandler)
    server.serve_forever()
from socketserver import StreamRequestHandler, TCPServer, ThreadingTCPServer
import time

class EchoHandler(StreamRequestHandler):
    def handle(self):
        print("Got Connection Address: %s" % str(self.client_address))
        for line in self.rfile:
            print(line)
            self.wfile.write(bytes("hello {}".format(line.decode('utf-8')).encode('utf-8')))

if __name__ == "__main__":
    serv = ThreadingTCPServer(("", 5000), EchoHandler)
    serv.serve_forever()

代碼詳解:

  • 處理多個客戶端,初始化一個ThreadingTCPServer實例;
  • 設(shè)置綁定的IP地址和端口,以及處理類;
  • 使用StreamRequestHandler(使用流的請求處理程序類,類似file-like對象,提供標(biāo)準(zhǔn)文件接口簡化通信過程),重寫里面的handle方法,獲取請求數(shù)據(jù),返回數(shù)據(jù)給客戶端;

TCP Socket客戶端

socket模塊:

# -*- coding: utf-8 -*-
from socket import socket, AF_INET, SOCK_STREAM
import time

def request_handler():
	start_time = time.time()
	sock_client = socket(AF_INET, SOCK_STREAM)
	sock_client.connect(('localhost', 5000))
	
	book_content = ""
	with open("send_books.txt", "r") as f:
		book_content = f.read()
	
	content_list = book_content.split("\n")
	for content in content_list:
		if content:
			sock_client.send((content).encode())
			time.sleep(2)
			response = sock_client.recv(8192)
			print(response)

	end_time = time.time()
	print("總共耗時:", end_time-start_time)

		

if __name__ == "__main__":
	request_handler()

UDP Socket

Socket模塊:

from socket import socket, AF_INET, SOCK_DGRAM
import time

def time_server(address):
    sock = socket(AF_INET, SOCK_DGRAM)
    sock.bind(address)

    while True:
        msg, addr = sock.recvfrom(8192)
        print('Get message from', addr)
        resp = time.ctime()
        sock.sendto(resp.encode('ascii'), addr)

if __name__ == "__main__":
    time_server(('', 5000))

代碼不詳解,和之前的差不多,注意不同的協(xié)議就完事了

客戶端測試:

from socket import socket, AF_INET, SOCK_DGRAM

if __name__ == "__main__":
    s = socket(AF_INET, SOCK_DGRAM)
    s.sendto(b'hello', ('localhost', 5000))
    text = s.recvfrom(8192)
    print(text)

socketserver模塊:

from socketserver import BaseRequestHandler, UDPServer
import time


class TimeHandler(BaseRequestHandler):
    def handle(self):
        print("Got Connection %s".format(str(self.client_address)))
        data = self.request[0]
        print(data)
        msg, sock = self.request
        print(msg)
        data = time.ctime()
        sock.sendto(data.encode('ascii'), self.client_address)

if __name__ == "__main__":
    u = UDPServer(("localhost", 9999), TimeHandler)
    u.serve_forever()

代碼不在贅述,如果需要多線程處理并發(fā)操作可以使用ThreadingUDPServer

總結(jié)

關(guān)于本篇介紹Python Socket編程,大都是皮毛,只是談到了Python實際處理socket的幾個模塊,
關(guān)于socket底層方面的知識并未提及,先了解個大概,從實際使用方面出發(fā),在實際使用過程中結(jié)合
計算機(jī)網(wǎng)絡(luò)知識,能夠?qū)ocket在整個TCP/IP協(xié)議棧中的作用。

socket和socketserver模塊都可以用來編寫網(wǎng)絡(luò)程序,不同的是socketserver省事很多,你可以專注
業(yè)務(wù)邏輯,不用去理會socket的各種細(xì)節(jié),包括不限于多線程/多進(jìn)程,接收數(shù)據(jù),發(fā)送數(shù)據(jù),通信過程。

以上就是Python Socket編程詳解的詳細(xì)內(nèi)容,更多關(guān)于Python Socket編程的資料請關(guān)注腳本之家其它相關(guān)文章!

您可能感興趣的文章:
  • python SOCKET編程基礎(chǔ)入門
  • python Socket網(wǎng)絡(luò)編程實現(xiàn)C/S模式和P2P
  • python網(wǎng)絡(luò)編程:socketserver的基本使用方法實例分析
  • python網(wǎng)絡(luò)編程socket實現(xiàn)服務(wù)端、客戶端操作詳解
  • 基于python3的socket聊天編程
  • python socket通信編程實現(xiàn)文件上傳代碼實例
  • Python 網(wǎng)絡(luò)編程之TCP客戶端/服務(wù)端功能示例【基于socket套接字】
  • Python 網(wǎng)絡(luò)編程之UDP發(fā)送接收數(shù)據(jù)功能示例【基于socket套接字】
  • python粘包問題及socket套接字編程詳解

標(biāo)簽:雙鴨山 陽泉 臨汾 日照 金華 克拉瑪依 貴州 赤峰

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《Python Socket編程詳解》,本文關(guān)鍵詞  Python,Socket,編程,詳解,Python,;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問題,煩請?zhí)峁┫嚓P(guān)信息告之我們,我們將及時溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《Python Socket編程詳解》相關(guān)的同類信息!
  • 本頁收集關(guān)于Python Socket編程詳解的相關(guān)信息資訊供網(wǎng)民參考!
  • 推薦文章
    天堂中文在线资| 亚洲大香人伊一本线| 精品欧美乱码久久久久久1区2区| 欧美成人精品欧美一级私黄| 欧美精品一区二区免费| 黄色aaa毛片| 97人妻精品视频一区| 成a人片亚洲日本久久| 久久精品夜色噜噜亚洲aⅴ| 日韩精品欧美国产精品忘忧草| 欧美私人情侣网站| 亚洲最大色综合成人av| 在线播放黄色网址| 国产麻豆精品一区二区| 日本久久久久久| 韩国欧美一区| 99久久精品一区二区成人| 免费观看黄色网| 欧美www在线观看| 亚洲天堂av一区二区三区| 日本在线免费观看一区| 色诱视频在线观看| 成人午夜免费av| 欧洲金发美女大战黑人| 日韩欧美四区| 国产激情视频一区二区三区欧美| 午夜久久久久久久久| 日韩av一区二区三区| 超碰97国产精品人人cao| 秋霞午夜在线观看| 欧美变态网站| 欧美激情手机在线视频| 日本欧美韩国一区三区| 91蜜桃在线视频| 亚洲精品456在线播放狼人| 久久久久99精品成人片我成大片| 日韩欧美视频一区二区三区| 超碰免费在线97| 少妇高潮一区二区三区99小说| 草草在线视频| 全免费一级毛片免费看| 欧美国产欧美亚洲国产日韩mv天天看完整| 午夜3点看的视频| 久久精品无码人妻| 户外极限露出调教在线视频| 免费福利视频网站| 三级黄在线观看| 国产一二三在线视频| 老司机深夜福利在线观看| 成人午夜激情免费视频| 国产成人精品视频在线| 久久韩剧网电视剧| 久久国产毛片| 成人视屏免费看| 亚洲精品在线观看网站| 欧美精品一区二区三区免费播放| 91福利视频网| 无码人妻精品中文字幕| 扒开jk护士狂揉免费| 欧美日韩国产丝袜美女| 国产精品 日产精品 欧美精品| 欧美日韩国产美女| 一区二区xxx| 久久久久久婷| 黄页免费欧美| 亚洲色图另类图片| 一区精品在线| 欧美乱做爰xxxⅹ久久久| 五月婷婷丁香色| 亚洲一区二区久久久久久| av成人免费在线观看| 善良的小姨在线| 久操视频在线播放| 亚洲色图在线看| 超碰影院在线观看| 天天操天天曰| 日韩女优人人人人射在线视频| 91精品久久久久久久久久久久久久| 欧美99久久| 密臀av在线播放| 免费看三级黄色片| 免费在线观看av片| 好吊成人免视频| 中文字幕一区二区三区精彩视频| 日韩精品高清视频| 欧美激情一区二区三区在线| 国产精品2024| 色小子综合网| 蜜桃视频在线网站| 亚洲乱码国产乱码精品精可以看| 性生活三级视频| 手机在线观看国产精品| 国内精品伊人久久| 激情小视频网站| 亚洲天天影视网| 日韩中字在线观看| 成年大片免费视频播放二级| 久久亚洲午夜电影| 免费看的黄色网| 欧美超级免费视 在线| yw.尤物在线精品视频| 国产精品mv在线观看| 日本精品久久中文字幕佐佐木| 久久久精品视频免费| 国产美女高潮视频| 在线播放一区二区精品产| 黄色影院一级片| 郴州新闻综合频道在线直播| 天天操夜夜添| 狠狠色丁香久久婷婷综合_中| 国内精品久久久久国产盗摄免费观看完整版| 亚洲色图一区二区| fc2ppv完全颜出在线播放| 精品一级视频| 精品亚洲一区二区三区四区| 免费毛片在线播放免费| 日本国产在线观看| 国产一区二区三区欧美| 亚洲无av在线中文字幕| 国产精品7m凸凹视频分类| 国产男女猛烈无遮挡免费视频| 亚洲精品高清视频在线观看| 日韩中文字幕91| 午夜精品免费在线| 91青娱乐在线视频| av在线免费播放网站| 日韩免费观看视频| 欧美高清另类hdvideosexjaⅴ| 成人免费淫片aa视频免费| 亚洲AV无码国产精品午夜字幕| av男人天堂一区| 一区二区三区四区电影| 丁香激情综合国产| 亚欧洲精品视频在线观看| 国产精品传媒| 欧美激情一区三区| 国产伦精品一区二区三区视频网站| 波多野在线观看| 国产不卡免费视频| 免费男女羞羞的视频网站中文字幕| 精品国产乱码久久久久久影片| 国产精品露出视频| 日韩一级精品视频在线观看| 性爱视频在线播放| 亚洲视频精品在线| 91av日本| 国产91露脸合集magnet| 91视频青青草| 性高爱久久久久久久久| 日韩一区二区三区在线视频| 91精品啪在线观看国产81旧版| 亚洲成人自拍网| 中国字幕a在线看韩国电影| 色婷婷综合久久久中字幕精品久久| 7777久久香蕉成人影院| 成人在线免费观看黄色| 国产精品你懂的| 美女视频久久黄| 国产精品视频26uuu| 成人av动漫在线观看| 一区二区高清视频在线观看| 成人免费一区二区三区牛牛| 欧美视频裸体精品| 在线电影看在线一区二区三区| 免费黄色一级网站| 亚洲大片在线观看| 午夜福制92视频| 一本色道久久综合狠狠躁的番外| av一区在线| 成人av午夜电影| 国产成人午夜片在线观看高清观看| 日韩亚洲欧美成人一区| 激情欧美一区二区三区中文字幕| 欧美大人香蕉在线| 亚洲国产精品久久久久久| 国产精品麻豆欧美日韩ww| 国产精品xxxx喷水欧美| 91成人在线观看喷潮蘑菇| 一本久久青青| 中文字幕人妻一区二区三区在线视频| 亚洲天堂av在线免费观看| 国产精品影院在线| 影音先锋男人资源站| 深夜影院在线观看| 中文国产成人精品| 亚洲欧美视频在线观看| 国产美女精品一区二区三区| 看片网站在线观看| 欧洲大片精品免费永久看nba| 中文字幕在线直播| 中文字幕资源网| 日韩免费福利电影在线观看| 欧美一区二区啪啪| a√免费观看在线网址www| 国产成人在线免费视频| 日韩久久久久久| 日韩中文综合网| 国产精品视频白浆免费视频| 色成人免费网站| 亚洲伊人一本大道中文字幕| 亚洲欧美中文日韩v在线观看| www.51色.com| 欧美成人基地| 欧美视频在线视频精品| 国内精品久久久久久久久蜜桃| 亚洲电影天堂av| 国产熟女一区二区三区五月婷| 国产在线乱码一区二区三区| 久久精品观看| 91国语精品自产拍在线观看性色| 国产日韩欧美黄色| 欧美高清视频免费观看| 男男h黄动漫啪啪无遮挡软件| 成人9ⅰ免费影视网站| 四虎久久免费| 国产成人精品免高潮费视频| 欧美一区二区在线不卡| 美州a亚洲一视本频v色道| 国产变态拳头交视频一区二区| 男生草女生视频| 国产区精品在线| 亚洲欧美日本一区二区| 亚洲柠檬福利资源导航| freehdxxxx护士| 五月亚洲婷婷| 亚洲蜜桃精久久久久久久久久久久| 美女精品在线| 久久精品国产一区二区三区肥胖| 欧美成人精品二区三区99精品| 偷窥自拍亚洲色图精选| 一区二区三区的久久的视频| 精品女厕一区二区三区| 中文字幕伦理免费在线视频| 亚洲欧洲无码一区二区三区| 91夜夜揉人人捏人人添红杏| 久久久久久免费视频| 亚洲欧洲国产伦综合| 国产精品第一| 在线观看欧美一区| 国产无遮挡aaa片爽爽| 亚洲男人电影天堂| 中文字幕黄色大片| 亚洲精品美女久久7777777| 亚洲熟女一区二区| 欧美日一区二区三区在线观看国产免| 欧美精品一区二区在线观看| 中文字幕的av| 日韩电影免费在线观看中文字幕| 国产中文在线| 欧美日韩国产高清一区二区| 久久久久久久黄色| 欧美一级淫片免费视频魅影视频| a视频免费在线观看| 韩国一区二区在线观看| 亚洲欧美日韩不卡| 99视频+国产日韩欧美| 综合自拍亚洲综合图不卡区| 91小视频在线播放| 午夜视频福利在线观看| 中文字幕一区二区三区乱码图片| 蜜臀尤物一区二区三区直播| 美女网站色精品尤物极品姐弟| 麻豆一区二区99久久久久| 可以免费观看av毛片| 国产在线观看第一页| 欧美日韩精品免费观看视完整| 久久久国产精品午夜一区ai换脸| 欧美一区二区黄色| 久久久久无码国产精品一区| 天堂在线中文网| 欧美精选在线播放| 久久久精品少妇| 欧美一级黄色录像片| 日韩精品中文字幕一区| 午夜精品视频一区二区三区在线看| 色综合久久悠悠| 亚洲婷婷在线| 国语对白精品一区二区| 亚洲欧美一二三| 56国语精品自产拍在线观看| 麻豆免费看一区二区三区| 亚洲国产一二三精品无码| canopen超线视频网线的应用| 亚洲一级二级在线| 久久久久成人网| 久久久久久免费精品| 97se亚洲国产综合自在线| 韩国三级电影在线观看婷婷| 在线免费观看h| 男人网站视频| 国产高清视频一区三区| 欧美在线观看视频网站| 成人av电影免费观看| 北条麻妃在线观看| 久久久久久久人妻无码中文字幕爆| 91精品国产高清一区二区三蜜臀| 亚洲一道本在线| 国产在线精品一区二区不卡了| 18一19gay欧美视频网站| 97人妻精品一区二区三区软件| 3d蒂法精品啪啪一区二区免费| 亚洲人成电影网站色www| 麻豆传媒在线视频| jizzjizzjizz亚洲| 久草网视频在线观看| 亚洲第一偷拍网| 欧美另类高清videos| 国产综合第一页| 在线播放日韩欧美| 亚洲电影在线免费观看| 亚洲综合日韩中文字幕v在线| 久久99亚洲热视| www.麻豆传媒| 欧美一级bbbbb性bbbb喷潮片| 久久影院在线观看| 国产精品xxx电影| 欧美激情中文字幕在线| 尤物99国产成人精品视频| 午夜精品免费在线| 中文字幕有码在线观看| 久久99精品久久久野外观看| 老司机精品导航| av免费不卡国产观看| 久久夜色精品国产亚洲aⅴ| 手机在线播放av| 亚洲精品v日韩精品| 日本不卡免费新一二三区| 精品国产乱子伦|