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

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程语言 > python >内容正文

python

Python基础之网络编程

發(fā)布時(shí)間:2024/3/26 python 47 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Python基础之网络编程 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

大家好我是J哥,今天學(xué)習(xí)網(wǎng)絡(luò)編程,什么是網(wǎng)絡(luò)編程呢?

一.楔子

你現(xiàn)在已經(jīng)學(xué)會(huì)了寫python代碼,假如你寫了兩個(gè)python文件a.py和b.py,分別去運(yùn)行,你就會(huì)發(fā)現(xiàn),這兩個(gè)python的文件分別運(yùn)行的很好。但是如果這兩個(gè)程序之間想要傳遞一個(gè)數(shù)據(jù),你要怎么做呢?

這個(gè)問題以你現(xiàn)在的知識(shí)就可以解決了,我們可以創(chuàng)建一個(gè)文件,把a(bǔ).py想要傳遞的內(nèi)容寫到文件中,然后b.py從這個(gè)文件中讀取內(nèi)容就可以了

但是當(dāng)你的a.py和b.py分別在不同電腦上的時(shí)候,你要怎么辦呢?

類似的機(jī)制有計(jì)算機(jī)網(wǎng)盤,qq等等。我們可以在我們的電腦上和別人聊天,可以在自己的電腦上向網(wǎng)盤中上傳、下載內(nèi)容。這些都是兩個(gè)程序在通信。

二.軟件開發(fā)的架構(gòu)

我們了解的涉及到兩個(gè)程序之間通訊的應(yīng)用大致可以分為兩種:

第一種是應(yīng)用類:qq、微信、網(wǎng)盤、優(yōu)酷這一類是屬于需要安裝的桌面應(yīng)用

第二種是web類:比如百度、知乎、博客園等使用瀏覽器訪問就可以直接使用的應(yīng)用

這些應(yīng)用的本質(zhì)其實(shí)都是兩個(gè)程序之間的通訊。而這兩個(gè)分類又對應(yīng)了兩個(gè)軟件開發(fā)的架構(gòu)~

1.C/S架構(gòu)

C/S即:Client與Server ,中文意思:客戶端與服務(wù)器端架構(gòu),這種架構(gòu)也是從用戶層面(也可以是物理層面)來劃分的。

這里的客戶端一般泛指客戶端應(yīng)用程序EXE,程序需要先安裝后,才能運(yùn)行在用戶的電腦上,對用戶的電腦操作系統(tǒng)環(huán)境依賴較大。

2.B/S架構(gòu)

B/S即:Browser與Server,中文意思:瀏覽器端與服務(wù)器端架構(gòu),這種架構(gòu)是從用戶層面來劃分的。

Browser瀏覽器,其實(shí)也是一種Client客戶端,只是這個(gè)客戶端不需要大家去安裝什么應(yīng)用程序,只需在瀏覽器上通過HTTP請求服務(wù)器端相關(guān)的資源(網(wǎng)頁資源),客戶端Browser瀏覽器就能進(jìn)行增刪改查。

三.網(wǎng)絡(luò)基礎(chǔ)

計(jì)算機(jī)網(wǎng)絡(luò) - Eva_J - 博客園

1.一個(gè)程序如何在網(wǎng)絡(luò)上找到另一個(gè)程序?

首先,程序必須要啟動(dòng),其次,必須有這臺(tái)機(jī)器的地址,我們都知道我們?nèi)说牡刂反蟾啪褪菄襖省\市\(zhòng)區(qū)\街道\樓\門牌號(hào)這樣字。那么每一臺(tái)聯(lián)網(wǎng)的機(jī)器在網(wǎng)絡(luò)上也有自己的地址,它的地址是怎么表示的呢?

就是使用一串?dāng)?shù)字來表示的,例如:127.4.5.6

什么是IP?

IP地址是指互聯(lián)網(wǎng)協(xié)議地址(英語:Internet Protocol Address,又譯為網(wǎng)際協(xié)議地址),是IP Address的縮寫。IP地址是IP協(xié)議提供的一種統(tǒng)一的地址格式,它為互聯(lián)網(wǎng)上的每一個(gè)網(wǎng)絡(luò)和每一臺(tái)主機(jī)分配一個(gè)邏輯地址,以此來屏蔽物理地址的差異。IP地址是一個(gè)32位的二進(jìn)制數(shù),通常被分割為4個(gè)“8位二進(jìn)制數(shù)”(也就是4個(gè)字節(jié))。IP地址通常用“點(diǎn)分十進(jìn)制”表示成(a.b.c.d)的形式,其中,a,b,c,d都是0~255之間的十進(jìn)制整數(shù)。例:點(diǎn)分十進(jìn)IP地址(100.4.5.6),實(shí)際上是32位二進(jìn)制數(shù)(01100100.00000100.00000101.00000110)。

什么是端口?

"端口"是英文port的意譯,可以認(rèn)為是設(shè)備與外界通訊交流的出口。

在windows上如何查看端口占用的情況?

netstat -aon|findstr "49157" ipconfig tasklist

因此ip地址精確到具體的一臺(tái)電腦,而端口精確到具體的程序。

2.osi七層模型

引子

須知一個(gè)完整的計(jì)算機(jī)系統(tǒng)是由硬件、操作系統(tǒng)、應(yīng)用軟件三者組成,具備了這三個(gè)條件,一臺(tái)計(jì)算機(jī)系統(tǒng)就可以自己跟自己玩了(打個(gè)單機(jī)游戲,玩?zhèn)€掃雷啥的)

如果你要跟別人一起玩,那你就需要上網(wǎng)了,什么是互聯(lián)網(wǎng)?

互聯(lián)網(wǎng)的核心就是由一堆協(xié)議組成,協(xié)議就是標(biāo)準(zhǔn),比如全世界人通信的標(biāo)準(zhǔn)是英語,如果把計(jì)算機(jī)比作人,互聯(lián)網(wǎng)協(xié)議就是計(jì)算機(jī)界的英語。所有的計(jì)算機(jī)都學(xué)會(huì)了互聯(lián)網(wǎng)協(xié)議,那所有的計(jì)算機(jī)都就可以按照統(tǒng)一的標(biāo)準(zhǔn)去收發(fā)信息從而完成通信了。

osi七層模型

人們按照分工不同把互聯(lián)網(wǎng)協(xié)議從邏輯上劃分了層級(jí):

3.socket概念

socket層

理解socket

Socket是應(yīng)用層與TCP/IP協(xié)議族通信的中間軟件抽象層,它是一組接口。在設(shè)計(jì)模式中,Socket其實(shí)就是一個(gè)門面模式,它把復(fù)雜的TCP/IP協(xié)議族隱藏在Socket接口后面,對用戶來說,一組簡單的接口就是全部,讓Socket去組織數(shù)據(jù),以符合指定的協(xié)議。

其實(shí)站在你的角度上看,socket就是一個(gè)模塊。我們通過調(diào)用模塊中已經(jīng)實(shí)現(xiàn)的方法建立兩個(gè)進(jìn)程之間的連接和通信。 也有人將socket說成ip+port,因?yàn)閕p是用來標(biāo)識(shí)互聯(lián)網(wǎng)中的一臺(tái)主機(jī)的位置,而port是用來標(biāo)識(shí)這臺(tái)機(jī)器上的一個(gè)應(yīng)用程序。 所以我們只要確立了ip和port就能找到一個(gè)應(yīng)用程序,并且使用socket模塊來與之通信。

3.套接字(socket)的發(fā)展史

套接字起源于 20 世紀(jì) 70 年代加利福尼亞大學(xué)伯克利分校版本的 Unix,即人們所說的 BSD Unix。 因此,有時(shí)人們也把套接字稱為“伯克利套接字”或“BSD 套接字”。一開始,套接字被設(shè)計(jì)用在同 一臺(tái)主機(jī)上多個(gè)應(yīng)用程序之間的通訊。這也被稱進(jìn)程間通訊,或 IPC。套接字有兩種(或者稱為有兩個(gè)種族),分別是基于文件型的和基于網(wǎng)絡(luò)型的。?

基于文件類型的套接字家族

套接字家族的名字:AF_UNIX

unix一切皆文件,基于文件的套接字調(diào)用的就是底層的文件系統(tǒng)來取數(shù)據(jù),兩個(gè)套接字進(jìn)程運(yùn)行在同一機(jī)器,可以通過訪問同一個(gè)文件系統(tǒng)間接完成通信

基于網(wǎng)絡(luò)類型的套接字家族

套接字家族的名字:AF_INET

(還有AF_INET6被用于ipv6,還有一些其他的地址家族,不過,他們要么是只用于某個(gè)平臺(tái),要么就是已經(jīng)被廢棄,或者是很少被使用,或者是根本沒有實(shí)現(xiàn),所有地址家族中,AF_INET是使用最廣泛的一個(gè),python支持很多種地址家族,但是由于我們只關(guān)心網(wǎng)絡(luò)編程,所以大部分時(shí)候我么只使用AF_INET)

4.tcp協(xié)議和udp協(xié)議

TCP(Transmission Control Protocol)可靠的、面向連接的協(xié)議(eg:打電話)、傳輸效率低全雙工通信(發(fā)送緩存&接收緩存)、面向字節(jié)流。使用TCP的應(yīng)用:Web瀏覽器;電子郵件、文件傳輸程序。

UDP(User Datagram Protocol)不可靠的、無連接的服務(wù),傳輸效率高(發(fā)送前時(shí)延小),一對一、一對多、多對一、多對多、面向報(bào)文,盡最大努力服務(wù),無擁塞控制。使用UDP的應(yīng)用:域名系統(tǒng)?(DNS);視頻流;IP語音(VoIP)。

我知道說這些你們也不懂,直接上圖。

四.套接字(socket)初使用

基于TCP協(xié)議的socket

tcp是基于鏈接的,必須先啟動(dòng)服務(wù)端,然后再啟動(dòng)客戶端去鏈接服務(wù)端

server端

import socket sk = socket.socket() sk.bind(('127.0.0.1',8898)) #把地址綁定到套接字 sk.listen() #監(jiān)聽鏈接 conn,addr = sk.accept() #接受客戶端鏈接 ret = conn.recv(1024) #接收客戶端信息 print(ret) #打印客戶端信息 conn.send(b'hi') #向客戶端發(fā)送信息 conn.close() #關(guān)閉客戶端套接字 sk.close() #關(guān)閉服務(wù)器套接字(可選)

client端

import socket sk = socket.socket() # 創(chuàng)建客戶套接字 sk.connect(('127.0.0.1',8898)) # 嘗試連接服務(wù)器 sk.send(b'hello!') ret = sk.recv(1024) # 對話(發(fā)送/接收) print(ret) sk.close() # 關(guān)閉客戶套接字

問題:有的小白在重啟服務(wù)端時(shí)可能會(huì)遇到

解決方法:

#加入一條socket配置,重用ip和端口 import socket from socket import SOL_SOCKET,SO_REUSEADDR sk = socket.socket() sk.setsockopt(SOL_SOCKET,SO_REUSEADDR,1) #就是它,在bind前加 sk.bind(('127.0.0.1',8898)) #把地址綁定到套接字 sk.listen() #監(jiān)聽鏈接 conn,addr = sk.accept() #接受客戶端鏈接 ret = conn.recv(1024) #接收客戶端信息 print(ret) #打印客戶端信息 conn.send(b'hi') #向客戶端發(fā)送信息 conn.close() #關(guān)閉客戶端套接字 sk.close() #關(guān)閉服務(wù)器套接字(可選)

基于UDP協(xié)議的socket

udp是無鏈接的,啟動(dòng)服務(wù)之后可以直接接受消息不需要提前建立鏈接

簡單使用

server端

import socket udp_sk = socket.socket(type=socket.SOCK_DGRAM) #創(chuàng)建一個(gè)服務(wù)器的套接字 udp_sk.bind(('127.0.0.1',8080)) #綁定服務(wù)器套接字 msg,addr = udp_sk.recvfrom(1024) print(msg) udp_sk.sendto(b'hi',addr) # 對話(接收與發(fā)送) udp_sk.close() # 關(guān)閉服務(wù)器套接字

client端

import socket ip_port=('127.0.0.1',8080) udp_sk=socket.socket(type=socket.SOCK_DGRAM) udp_sk.sendto(b'hello',ip_port) back_msg,addr=udp_sk.recvfrom(1024) print(back_msg.decode('utf-8'),addr)

帶兩個(gè)例子:

?qq聊天

server端

#_*_coding:utf-8_*_ import socket ip_port=('127.0.0.1',8081) udp_server_sock=socket.socket(socket.AF_INET,socket.SOCK_DGRAM) udp_server_sock.bind(ip_port)while True:qq_msg,addr=udp_server_sock.recvfrom(1024)print('來自[%s:%s]的一條消息:\033[1;44m%s\033[0m' %(addr[0],addr[1],qq_msg.decode('utf-8')))back_msg=input('回復(fù)消息: ').strip()udp_server_sock.sendto(back_msg.encode('utf-8'),addr)server

client端

#_*_coding:utf-8_*_ import socket BUFSIZE=1024 udp_client_socket=socket.socket(socket.AF_INET,socket.SOCK_DGRAM)qq_name_dic={'tom':('127.0.0.1',8081),'tony':('127.0.0.1',8081),'egg':('127.0.0.1',8081),'kk':('127.0.0.1',8081), }while True:qq_name=input('請選擇聊天對象: ').strip()while True:msg=input('請輸入消息,回車發(fā)送,輸入q結(jié)束和他的聊天: ').strip()if msg == 'q':breakif not msg or not qq_name or qq_name not in qq_name_dic:continueudp_client_socket.sendto(msg.encode('utf-8'),qq_name_dic[qq_name])back_msg,addr=udp_client_socket.recvfrom(BUFSIZE)print('來自[%s:%s]的一條消息:\033[1;44m%s\033[0m' %(addr[0],addr[1],back_msg.decode('utf-8')))udp_client_socket.close()client

五.黏包

黏包現(xiàn)象

讓我們基于tcp先制作一個(gè)遠(yuǎn)程執(zhí)行命令的程序(命令ls -l ; lllllll ; pwd)

res=subprocess.Popen(cmd.decode('utf-8'), shell=True, stderr=subprocess.PIPE, stdout=subprocess.PIPE)的結(jié)果的編碼是以當(dāng)前所在的系統(tǒng)為準(zhǔn)的,如果是windows,那么res.stdout.read()讀出的就是GBK編碼的,在接收端需要用GBK解碼且只能從管道里讀一次結(jié)果注意

同時(shí)執(zhí)行多條命令之后,得到的結(jié)果很可能只有一部分,在執(zhí)行其他命令的時(shí)候又接收到之前執(zhí)行的另外一部分結(jié)果,這種顯現(xiàn)就是黏包。

基于tcp協(xié)議實(shí)現(xiàn)的黏包

tcp-server

#_*_coding:utf-8_*_ from socket import * import subprocessip_port=('127.0.0.1',8888) BUFSIZE=1024tcp_socket_server=socket(AF_INET,SOCK_STREAM) tcp_socket_server.setsockopt(SOL_SOCKET,SO_REUSEADDR,1) tcp_socket_server.bind(ip_port) tcp_socket_server.listen(5)while True:conn,addr=tcp_socket_server.accept()print('客戶端',addr)while True:cmd=conn.recv(BUFSIZE)if len(cmd) == 0:breakres=subprocess.Popen(cmd.decode('utf-8'),shell=True,stdout=subprocess.PIPE,stdin=subprocess.PIPE,stderr=subprocess.PIPE)stderr=res.stderr.read()stdout=res.stdout.read()conn.send(stderr)conn.send(stdout)tcp - server

tcp-client

#_*_coding:utf-8_*_ import socket BUFSIZE=1024 ip_port=('127.0.0.1',8888)s=socket.socket(socket.AF_INET,socket.SOCK_STREAM) res=s.connect_ex(ip_port)while True:msg=input('>>: ').strip()if len(msg) == 0:continueif msg == 'quit':breaks.send(msg.encode('utf-8'))act_res=s.recv(BUFSIZE)print(act_res.decode('utf-8'),end='')tcp - client

基于udp協(xié)議實(shí)現(xiàn)的黏包

server

#_*_coding:utf-8_*_ from socket import * import subprocessip_port=('127.0.0.1',9000) bufsize=1024udp_server=socket(AF_INET,SOCK_DGRAM) udp_server.setsockopt(SOL_SOCKET,SO_REUSEADDR,1) udp_server.bind(ip_port)while True:#收消息cmd,addr=udp_server.recvfrom(bufsize)print('用戶命令----->',cmd)#邏輯處理res=subprocess.Popen(cmd.decode('utf-8'),shell=True,stderr=subprocess.PIPE,stdin=subprocess.PIPE,stdout=subprocess.PIPE)stderr=res.stderr.read()stdout=res.stdout.read()#發(fā)消息udp_server.sendto(stderr,addr)udp_server.sendto(stdout,addr) udp_server.close()udp - server

client

from socket import * ip_port=('127.0.0.1',9000) bufsize=1024udp_client=socket(AF_INET,SOCK_DGRAM)while True:msg=input('>>: ').strip()udp_client.sendto(msg.encode('utf-8'),ip_port)err,addr=udp_client.recvfrom(bufsize)out,addr=udp_client.recvfrom(bufsize)if err:print('error : %s'%err.decode('utf-8'),end='')if out:print(out.decode('utf-8'), end='')udp - client

注意:只有TCP有粘包現(xiàn)象,UDP永遠(yuǎn)不會(huì)粘包

UDP(user datagram protocol,用戶數(shù)據(jù)報(bào)協(xié)議)是無連接的,面向消息的,提供高效率服務(wù)。 不會(huì)使用塊的合并優(yōu)化算法,, 由于UDP支持的是一對多的模式,所以接收端的skbuff(套接字緩沖區(qū))采用了鏈?zhǔn)浇Y(jié)構(gòu)來記錄每一個(gè)到達(dá)的UDP包,在每個(gè)UDP包中就有了消息頭(消息來源地址,端口等信息),這樣,對于接收端來說,就容易進(jìn)行區(qū)分處理了。 即面向消息的通信是有消息保護(hù)邊界的。 對于空消息:tcp是基于數(shù)據(jù)流的,于是收發(fā)的消息不能為空,這就需要在客戶端和服務(wù)端都添加空消息的處理機(jī)制,防止程序卡住,而udp是基于數(shù)據(jù)報(bào)的,即便是你輸入的是空內(nèi)容(直接回車),也可以被發(fā)送,udp協(xié)議會(huì)幫你封裝上消息頭發(fā)送過去。 不可靠不黏包的udp協(xié)議:udp的recvfrom是阻塞的,一個(gè)recvfrom(x)必須對唯一一個(gè)sendinto(y),收完了x個(gè)字節(jié)的數(shù)據(jù)就算完成,若是y;x數(shù)據(jù)就丟失,這意味著udp根本不會(huì)粘包,但是會(huì)丟數(shù)據(jù),不可靠。

補(bǔ)充說明:udp和tcp一次性發(fā)送長度的限制

用UDP協(xié)議發(fā)送時(shí),用sendto函數(shù)最大能發(fā)送數(shù)據(jù)的長度為:65535- IP頭(20) – UDP頭(8)=65507字節(jié)。用sendto函數(shù)發(fā)送數(shù)據(jù)時(shí),如果發(fā)送數(shù)據(jù)長度大于該值,則函數(shù)會(huì)返回錯(cuò)誤。(丟棄這個(gè)包,不進(jìn)行發(fā)送) 用TCP協(xié)議發(fā)送時(shí),由于TCP是數(shù)據(jù)流協(xié)議,因此不存在包大小的限制(暫不考慮緩沖區(qū)的大小),這是指在用send函數(shù)時(shí),數(shù)據(jù)長度參數(shù)不受限制。而實(shí)際上,所指定的這段數(shù)據(jù)并不一定會(huì)一次性發(fā)送出去,如果這段數(shù)據(jù)比較長,會(huì)被分段發(fā)送,如果比較短,可能會(huì)等待和下一次數(shù)據(jù)一起發(fā)送。

總結(jié)

黏包現(xiàn)象只發(fā)生在tcp協(xié)議中:

1.從表面上看,黏包問題主要是因?yàn)榘l(fā)送方和接收方的緩存機(jī)制、tcp協(xié)議面向流通信的特點(diǎn)。

2.實(shí)際上,主要還是因?yàn)榻邮辗讲恢老⒅g的界限,不知道一次性提取多少字節(jié)的數(shù)據(jù)所造成的

黏包的解決方案

解決方案一

問題的根源在于,接收端不知道發(fā)送端將要傳送的字節(jié)流的長度,所以解決粘包的方法就是圍繞,如何讓發(fā)送端在發(fā)送數(shù)據(jù)前,把自己將要發(fā)送的字節(jié)流總大小讓接收端知曉,然后接收端來一個(gè)死循環(huán)接收完所有數(shù)據(jù)。

服務(wù)端

#_*_coding:utf-8_*_ import socket,subprocess ip_port=('127.0.0.1',8080) s=socket.socket(socket.AF_INET,socket.SOCK_STREAM) s.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)s.bind(ip_port) s.listen(5)while True:conn,addr=s.accept()print('客戶端',addr)while True:msg=conn.recv(1024)if not msg:breakres=subprocess.Popen(msg.decode('utf-8'),shell=True,\stdin=subprocess.PIPE,\stderr=subprocess.PIPE,\stdout=subprocess.PIPE)err=res.stderr.read()if err:ret=errelse:ret=res.stdout.read()data_length=len(ret)conn.send(str(data_length).encode('utf-8'))data=conn.recv(1024).decode('utf-8')if data == 'recv_ready':conn.sendall(ret)conn.close()服務(wù)端

客戶端

#_*_coding:utf-8_*_ import socket,time s=socket.socket(socket.AF_INET,socket.SOCK_STREAM) res=s.connect_ex(('127.0.0.1',8080))while True:msg=input('>>: ').strip()if len(msg) == 0:continueif msg == 'quit':breaks.send(msg.encode('utf-8'))length=int(s.recv(1024).decode('utf-8'))s.send('recv_ready'.encode('utf-8'))send_size=0recv_size=0data=b''while recv_size < length:data+=s.recv(1024)recv_size+=len(data)print(data.decode('utf-8'))客戶端 存在的問題: 程序的運(yùn)行速度遠(yuǎn)快于網(wǎng)絡(luò)傳輸速度,所以在發(fā)送一段字節(jié)前,先用send去發(fā)送該字節(jié)流長度,這種方式會(huì)放大網(wǎng)絡(luò)延遲帶來的性能損耗

解決方案進(jìn)階

剛剛的方法,問題在于我們我們在發(fā)送

我們可以借助一個(gè)模塊,這個(gè)模塊可以把要發(fā)送的數(shù)據(jù)長度轉(zhuǎn)換成固定長度的字節(jié)。這樣客戶端每次接收消息之前只要先接受這個(gè)固定長度字節(jié)的內(nèi)容看一看接下來要接收的信息大小,那么最終接受的數(shù)據(jù)只要達(dá)到這個(gè)值就停止,就能剛好不多不少的接收完整的數(shù)據(jù)了。

struct模塊

該模塊可以把一個(gè)類型,如數(shù)字,轉(zhuǎn)成固定長度的bytes

>>> struct.pack('i',1111111111111) struct.error: 'i' format requires -2147483648 <= number <= 2147483647 #這個(gè)是范圍

import json,struct #假設(shè)通過客戶端上傳1T:1073741824000的文件a.txt#為避免粘包,必須自定制報(bào)頭 header={'file_size':1073741824000,'file_name':'/a/b/c/d/e/a.txt','md5':'8f6fbf8347faa4924a76856701edb0f3'} #1T數(shù)據(jù),文件路徑和md5值#為了該報(bào)頭能傳送,需要序列化并且轉(zhuǎn)為bytes head_bytes=bytes(json.dumps(header),encoding='utf-8') #序列化并轉(zhuǎn)成bytes,用于傳輸#為了讓客戶端知道報(bào)頭的長度,用struck將報(bào)頭長度這個(gè)數(shù)字轉(zhuǎn)成固定長度:4個(gè)字節(jié) head_len_bytes=struct.pack('i',len(head_bytes)) #這4個(gè)字節(jié)里只包含了一個(gè)數(shù)字,該數(shù)字是報(bào)頭的長度#客戶端開始發(fā)送 conn.send(head_len_bytes) #先發(fā)報(bào)頭的長度,4個(gè)bytes conn.send(head_bytes) #再發(fā)報(bào)頭的字節(jié)格式 conn.sendall(文件內(nèi)容) #然后發(fā)真實(shí)內(nèi)容的字節(jié)格式#服務(wù)端開始接收 head_len_bytes=s.recv(4) #先收報(bào)頭4個(gè)bytes,得到報(bào)頭長度的字節(jié)格式 x=struct.unpack('i',head_len_bytes)[0] #提取報(bào)頭的長度head_bytes=s.recv(x) #按照報(bào)頭長度x,收取報(bào)頭的bytes格式 header=json.loads(json.dumps(header)) #提取報(bào)頭#最后根據(jù)報(bào)頭的內(nèi)容提取真實(shí)的數(shù)據(jù),比如 real_data_len=s.recv(header['file_size']) s.recv(real_data_len)

借助struct模塊,我們知道長度數(shù)字可以被轉(zhuǎn)換成一個(gè)標(biāo)準(zhǔn)大小的4字節(jié)數(shù)字。因此可以利用這個(gè)特點(diǎn)來預(yù)先發(fā)送數(shù)據(jù)長度

服務(wù)端

import socket,struct,json import subprocess phone=socket.socket(socket.AF_INET,socket.SOCK_STREAM) phone.setsockopt(socket.SOL_SOCKET,socket.SO_REUSEADDR,1) #就是它,在bind前加phone.bind(('127.0.0.1',8080))phone.listen(5)while True:conn,addr=phone.accept()while True:cmd=conn.recv(1024)if not cmd:breakprint('cmd: %s' %cmd)res=subprocess.Popen(cmd.decode('utf-8'),shell=True,stdout=subprocess.PIPE,stderr=subprocess.PIPE)err=res.stderr.read()print(err)if err:back_msg=errelse:back_msg=res.stdout.read()conn.send(struct.pack('i',len(back_msg))) #先發(fā)back_msg的長度conn.sendall(back_msg) #在發(fā)真實(shí)的內(nèi)容conn.close()服務(wù)端(自定制報(bào)頭)

客戶端

#_*_coding:utf-8_*_ import socket,time,structs=socket.socket(socket.AF_INET,socket.SOCK_STREAM) res=s.connect_ex(('127.0.0.1',8080))while True:msg=input('>>: ').strip()if len(msg) == 0:continueif msg == 'quit':breaks.send(msg.encode('utf-8'))l=s.recv(4)x=struct.unpack('i',l)[0]print(type(x),x)# print(struct.unpack('I',l))r_s=0data=b''while r_s < x:r_d=s.recv(1024)data+=r_dr_s+=len(r_d)# print(data.decode('utf-8'))print(data.decode('gbk')) #windows默認(rèn)gbk編碼客戶端(自定制報(bào)頭)

我們還可以把報(bào)頭做成字典,字典里包含將要發(fā)送的真實(shí)數(shù)據(jù)的詳細(xì)信息,然后json序列化,然后用struck將序列化后的數(shù)據(jù)長度打包成4個(gè)字節(jié)(4個(gè)自己足夠用了)

服務(wù)端-復(fù)雜修改

import socket,struct,json import subprocess phone=socket.socket(socket.AF_INET,socket.SOCK_STREAM) phone.setsockopt(socket.SOL_SOCKET,socket.SO_REUSEADDR,1) #就是它,在bind前加phone.bind(('127.0.0.1',8080))phone.listen(5)while True:conn,addr=phone.accept()while True:cmd=conn.recv(1024)if not cmd:breakprint('cmd: %s' %cmd)res=subprocess.Popen(cmd.decode('utf-8'),shell=True,stdout=subprocess.PIPE,stderr=subprocess.PIPE)err=res.stderr.read()print(err)if err:back_msg=errelse:back_msg=res.stdout.read()headers={'data_size':len(back_msg)}head_json=json.dumps(headers)head_json_bytes=bytes(head_json,encoding='utf-8')conn.send(struct.pack('i',len(head_json_bytes))) #先發(fā)報(bào)頭的長度conn.send(head_json_bytes) #再發(fā)報(bào)頭conn.sendall(back_msg) #在發(fā)真實(shí)的內(nèi)容conn.close()服務(wù)端:定制稍微復(fù)雜一點(diǎn)的報(bào)頭

客戶端

from socket import * import struct,jsonip_port=('127.0.0.1',8080) client=socket(AF_INET,SOCK_STREAM) client.connect(ip_port)while True:cmd=input('>>: ')if not cmd:continueclient.send(bytes(cmd,encoding='utf-8'))head=client.recv(4)head_json_len=struct.unpack('i',head)[0]head_json=json.loads(client.recv(head_json_len).decode('utf-8'))data_len=head_json['data_size']recv_size=0recv_data=b''while recv_size < data_len:recv_data+=client.recv(1024)recv_size+=len(recv_data)print(recv_data.decode('utf-8'))#print(recv_data.decode('gbk')) #windows默認(rèn)gbk編碼客戶端

六.socketserver

server端

import socketserver class Myserver(socketserver.BaseRequestHandler):def handle(self):self.data = self.request.recv(1024).strip()print("{} wrote:".format(self.client_address[0]))print(self.data)self.request.sendall(self.data.upper())if __name__ == "__main__":HOST, PORT = "127.0.0.1", 9999# 設(shè)置allow_reuse_address允許服務(wù)器重用地址socketserver.TCPServer.allow_reuse_address = True# 創(chuàng)建一個(gè)server, 將服務(wù)地址綁定到127.0.0.1:9999server = socketserver.TCPServer((HOST, PORT),Myserver)# 讓server永遠(yuǎn)運(yùn)行下去,除非強(qiáng)制停止程序server.serve_forever()server端

client

import socketHOST, PORT = "127.0.0.1", 9999 data = "hello"# 創(chuàng)建一個(gè)socket鏈接,SOCK_STREAM代表使用TCP協(xié)議 with socket.socket(socket.AF_INET, socket.SOCK_STREAM) as sock:sock.connect((HOST, PORT)) # 鏈接到客戶端sock.sendall(bytes(data + "\n", "utf-8")) # 向服務(wù)端發(fā)送數(shù)據(jù)received = str(sock.recv(1024), "utf-8")# 從服務(wù)端接收數(shù)據(jù)print("Sent: {}".format(data)) print("Received: {}".format(received))client

看到這里就就下你的痕跡吧!算是對J哥最大的支持!

總結(jié)

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

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

99激情网 | 国产涩图 | 一区二区三区免费在线观看 | 中文字幕在线视频第一页 | 一本一道久久a久久精品 | 91av在线看 | 日韩久久视频 | 国产黄色片一级 | 中文字幕不卡在线88 | 日韩av播放在线 | 国产黄影院色大全免费 | 国产精品青草综合久久久久99 | 日韩综合第一页 | 亚洲日本欧美 | 久久玖| 亚洲国产片色 | 久久免费电影网 | 美女黄频在线观看 | 在线成人高清电影 | 麻豆视频免费 | 日韩一区在线播放 | 黄色美女免费网站 | 97av影院 | 日韩在线二区 | 亚洲精品一区二区三区高潮 | 国产午夜精品一区二区三区四区 | 久久超碰免费 | 久久免费高清 | 久久综合亚洲鲁鲁五月久久 | 丁香五月亚洲综合在线 | 欧美一级久久久久 | a视频在线播放 | 日韩欧美在线视频一区二区三区 | www日| 亚洲一区视频免费观看 | 91av片| 国产高清免费视频 | 久久电影日韩 | 奇米影视四色8888 | 欧美一进一出抽搐大尺度视频 | 日本免费一二三区 | 人人澡av| 精品久久一级片 | 国产精品不卡在线播放 | 久久久免费网站 | 特级毛片aaa | 97超碰资源站| 欧美一级黄色视屏 | 国产午夜精品一区 | 久久久久久久久久电影 | 91一区二区在线 | 黄色avwww| 黄av免费在线观看 | 国产a视频免费观看 | 日韩久久久久久 | 成人网页在线免费观看 | 91x色 | 国产在线观看 | 91av原创| 国产精品中文字幕在线 | 亚洲高清免费在线 | 91传媒91久久久 | 美女视频a美女大全免费下载蜜臀 | 丁香婷婷综合激情 | 国产精品九九视频 | 最新国产精品久久精品 | 亚洲视频在线观看 | 麻豆影视在线免费观看 | 日日天天干 | 91日韩在线 | 欧美专区国产专区 | 国产色婷婷精品综合在线手机播放 | 91免费高清在线观看 | 麻豆影视网 | 成年人视频在线免费播放 | 成人在线播放免费观看 | 激情婷婷综合 | 天天干天天干天天射 | 亚洲精品一区二区三区新线路 | 麻豆成人小视频 | 精品福利av | 亚洲欧洲一区二区在线观看 | 亚洲精品在线观看网站 | 天堂va在线高清一区 | 久久综合中文字幕 | 四虎成人av| 国产精品k频道 | 天天干夜夜夜 | 天天精品视频 | 蜜桃视频日本 | 日韩亚洲在线 | 免费在线观看污 | 国产天天综合 | 日韩xxxbbb| 一区二区三区电影大全 | 久久久久久久影视 | 日韩资源在线观看 | 一区二区三区四区五区六区 | 日韩精品免费在线 | 久久精品中文视频 | 亚洲精品免费在线 | 午夜精品久久久久久 | 久久激情五月丁香伊人 | 久久黄色免费视频 | 国产一级高清视频 | 久久久精品欧美 | 国产色视频网站2 | 色网av| 国产小视频在线看 | 国产精品99精品久久免费 | 亚洲一区二区视频在线播放 | 91麻豆产精品久久久久久 | 国产手机在线视频 | 欧美成人tv| 色综合中文综合网 | 日韩精品视频免费在线观看 | 亚洲蜜桃在线 | 国产成人综合精品 | 久久综合久久久久88 | 狠狠色综合欧美激情 | 黄色片网站免费 | 亚洲高清久久久 | 色综合久久悠悠 | 亚洲视频久久久 | 日韩在线免费观看视频 | 国产精品精品久久久久久 | 久久伦理电影网 | 日韩高清在线一区二区三区 | 成人wwwxxx视频 | 99久精品 | 日本精品免费看 | 国产一级视频在线 | 六月丁香激情网 | 欧美日韩国产精品一区二区 | 国产成人久久久77777 | 免费av黄色| 最近中文字幕视频完整版 | 手机av看片| 国产乱视频 | 91亚色视频 | 九九色视频| 中文在线字幕观看电影 | 国产精品免费久久久久影院仙踪林 | 五月开心六月婷婷 | 911精品视频| 日韩av在线免费播放 | 精品一区二区三区四区在线 | 久久黄网站 | 91亚洲狠狠婷婷综合久久久 | 日日夜夜精品视频 | 涩涩网站在线播放 | 中文字幕超清在线免费 | 天天插天天 | 中文字幕人成不卡一区 | 亚洲高清在线视频 | 久人人| 6699私人影院 | 亚洲精品456在线播放 | 最新日本中文字幕 | 手机成人在线电影 | 日韩中文字幕免费在线观看 | 最新日韩电影 | 国产中文字幕91 | 久久久免费在线观看 | 成人久久国产 | 91网页版在线观看 | 欧美日韩视频网站 | 国产一区二区高清不卡 | 色综合国产| 在线观看黄色大片 | 中文不卡视频 | 日韩理论在线播放 | 91视频高清 | 91自拍视频在线观看 | 五月天视频网站 | 亚洲综合欧美精品电影 | 天天干天天干天天射 | 国产亚洲一区二区三区 | 婷婷五天天在线视频 | 精品久久一区二区三区 | 精品在线播放视频 | 久久激情小视频 | 五月天综合在线 | 国产一级二级在线观看 | 国产精品2018 | 月下香电影 | 国产不卡av在线 | 天天干夜夜擦 | av在线播放不卡 | 男女免费av | 五月婷婷.com | 亚洲精品视频中文字幕 | 国产99自拍 | 欧美999| 免费看的黄网站软件 | 91九色在线视频观看 | 国产又粗又猛又爽又黄的视频先 | 91伊人久久大香线蕉蜜芽人口 | 国产香蕉97碰碰碰视频在线观看 | 丝袜美腿亚洲综合 | 亚洲欧洲在线视频 | 成人午夜精品福利免费 | 精品在线视频一区二区三区 | 天堂久久电影网 | 亚洲第一av在线播放 | 免费黄色一区 | 久久综合视频网 | 狠狠色丁香久久综合网 | 色综合天天综合 | 国产男女爽爽爽免费视频 | 色视频网站免费观看 | 精品亚洲二区 | 成人h在线观看 | 天天搞天天干 | 国产精品欧美久久久久无广告 | 精品一区二区6 | 波多野结衣在线观看一区二区三区 | 日本久久视频 | 日韩电影在线观看中文字幕 | 91视频在线国产 | 国产日本在线观看 | 欧美日韩精品在线一区二区 | 免费h精品视频在线播放 | 国产成人精品一区二区三区网站观看 | 日韩成人邪恶影片 | 欧美视频国产视频 | 亚洲91中文字幕无线码三区 | 免费在线观看不卡av | 青春草视频在线播放 | 久久男女视频 | 91av小视频 | 日日摸日日 | 亚洲国产成人精品在线观看 | 久久精品99国产精品日本 | 精品久久久久久久久久久久久久久久 | 99视频这里有精品 | 国产亚洲欧美在线视频 | 黄色免费视频在线观看 | 久久久影院一区二区三区 | 国产免费a | 激情五月看片 | 天天干天天插 | 日韩在线一二三区 | 亚洲一区二区三区四区在线视频 | 中文字幕第一页在线视频 | 久草在线中文视频 | 天天操天天爱天天爽 | 精品久久久精品 | 特级西西444www大精品视频免费看 | 欧美日本一区 | 日韩欧美在线免费 | 日韩欧美视频在线免费观看 | 午夜av剧场| 黄色综合 | 丝袜美腿亚洲 | 欧美一级久久久 | 久久国色夜色精品国产 | ,久久福利影视 | 国产男女免费完整视频 | 91精品人成在线观看 | 日韩精品中文字幕av | 成人免费视频免费观看 | 国产视频一区在线播放 | 香蕉视频免费在线播放 | 国产视频日韩视频欧美视频 | 韩国三级一区 | a√天堂资源 | 中文字幕在线视频国产 | 一二区精品 | 日韩精品不卡 | 日韩av中文字幕在线 | 久久天天躁狠狠躁亚洲综合公司 | 精品在线视频一区二区三区 | 日韩av资源在线观看 | 色老板在线视频 | 天天色 天天 | 亚洲 中文 在线 精品 | av在线免费在线 | 福利网在线 | 亚洲乱码精品久久久久 | 成年人免费观看国产 | 精品久久网 | 亚洲毛片久久 | 国产精品久久久一区二区三区网站 | 久久久精品久久日韩一区综合 | 久久久免费高清视频 | 天天色天天艹 | 国产91精品在线播放 | 一区二区三区电影大全 | 中文字幕在线日本 | 国产1区2区 | 91精品看片| 久久黄色网址 | 亚洲国产日韩欧美 | 九九免费精品视频在线观看 | 久久精品超碰 | 香蕉国产91 | 日日干 天天干 | 久草在线免费看视频 | 黄色高清视频在线观看 | 激情视频一区二区三区 | 毛片精品免费在线观看 | 免费欧美高清视频 | 天天干 天天摸 天天操 | 亚洲国产精品一区二区尤物区 | 婷婷午夜 | av无限看| 日本免费久久高清视频 | 亚洲午夜精 | 日韩婷婷| 中文字幕av免费 | 日韩视频免费 | 日韩一区二区三区高清免费看看 | 少妇性aaaaaaaaa视频 | 久久成人综合视频 | 亚洲成年人在线播放 | 精品久久网 | 岛国av在线不卡 | 欧美一级视频一区 | 日韩免费一级电影 | 色福利网 | 久草精品视频 | 色综合久久久网 | 人人插人人玩 | 欧美精品一区二区性色 | 亚洲国产成人av网 | 色综合天天爱 | 免费在线视频一区二区 | 97成人在线| 91尤物在线播放 | 香蕉视频在线免费 | 97国产精品免费 | 久久久精品国产一区二区电影四季 | 免费午夜视频在线观看 | 久久伦理 | 午夜精品一区二区国产 | 国产精品久久久久影视 | 干亚洲少妇 | 丁香亚洲 | 在线观看韩国av | 久久亚洲成人网 | 免费a级大片 | 最新av观看 | 亚洲人片在线观看 | 国产精品系列在线 | 亚洲精品国精品久久99热一 | 日产乱码一二三区别在线 | 国产精品夜夜夜一区二区三区尤 | 天天综合在线观看 | 亚洲一级片免费观看 | 久久久综合电影 | 久久综合九色综合97_ 久久久 | 91av在线不卡 | 国产精品一区二区视频 | 在线a视频 | 亚洲婷婷在线 | 国产专区在线看 | 在线激情电影 | 国内免费的中文字幕 | 黄色成人在线观看 | 天天干天天操 | 久久精品99北条麻妃 | 欧洲一区二区三区精品 | 久久免视频| 久章操 | 五月综合色| 国产一二区视频 | 超碰97公开 | 精品久久精品久久 | 日韩av看片 | 免费观看av | 亚洲天堂香蕉 | 国产日本亚洲 | 日本不卡123 | 天天爱天天操天天射 | 黄色的网站免费看 | 97电院网手机版 | 国产一区二区综合 | 国产亚洲免费的视频看 | 男女日麻批 | 激情黄色av | 福利视频导航网址 | 99免费在线视频观看 | 国产福利不卡视频 | 91亚洲国产 | 久久国产二区 | 91九色蝌蚪在线 | 亚洲在线视频网站 | 日韩高清免费在线观看 | 麻豆国产精品va在线观看不卡 | 91看片在线| 97综合在线 | 天天骚夜夜操 | 狠狠的日日| 成人在线播放免费观看 | 日本中文字幕在线观看 | 国产玖玖视频 | 黄色免费网 | 蜜桃av综合网 | 久久久麻豆精品一区二区 | 99在线热播精品免费 | 五月开心六月伊人色婷婷 | 国产一区网址 | 亚州国产精品 | 永久免费毛片 | 国产精品一区二区在线免费观看 | 欧美91精品| 91探花国产综合在线精品 | 国产精品美女久久久久久 | 天天视频色版 | 性色av一区二区三区在线观看 | 免费观看一区二区三区视频 | 综合网色| 黄色一集片 | 久草视频资源 | 91精品国产一区二区在线观看 | 黄色精品在线看 | 日韩在线理论 | 欧美日韩国产精品一区 | 久久精品一区二区三区中文字幕 | 国产不卡在线视频 | 久久久久久高潮国产精品视 | 人人爱人人做人人爽 | 亚洲精品国产精品国产 | 在线观看蜜桃视频 | 国产精品一区二区三区观看 | 日本免费一二三区 | 午夜精品福利在线 | 国产一区二区不卡视频 | 亚洲三级在线播放 | 精品久久影院 | 综合国产在线 | 免费国产亚洲视频 | 国产麻豆精品久久一二三 | 精品二区久久 | 91x色| 天天干天天做 | 久久精久久精 | 国产麻豆精品久久 | 高清不卡一区二区三区 | 99视频精品免费视频 | 一区二区伦理 | 欧美一性一交一乱 | 日韩在线小视频 | 97色免费视频 | 日韩av在线资源 | 91激情视频在线观看 | 天天综合精品 | 国产精品久久久久久久久久久久午 | 97国产超碰 | 久久久免费看 | 亚洲三级网站 | 精品久久久久久久 | 久久国产一区二区 | 超碰97网站 | 在线观看中文字幕亚洲 | 免费男女羞羞的视频网站中文字幕 | 免费观看成人网 | 丰满少妇在线观看资源站 | 99热国产在线 | 在线播放国产一区二区三区 | 麻豆果冻剧传媒在线播放 | 日韩在线精品 | av无限看 | 91视频国产免费 | 国产精品99久久久久久武松影视 | 天天搞天天干天天色 | www.狠狠干| 91视频在线网址 | 成人午夜剧场在线观看 | 欧美精品亚洲精品 | 国产精彩视频一区 | 中文字幕最新精品 | 亚洲视频 一区 | 成人91在线观看 | 日韩视频在线一区 | 黄色毛片一级片 | 91黄色在线视频 | 欧美精品国产综合久久 | 二区三区中文字幕 | 国产成人精品久久久久 | 亚洲在线视频免费 | 免费看亚洲毛片 | 激情婷婷在线观看 | 99热超碰 | 欧美日韩视频在线一区 | av 一区二区三区四区 | 国产婷婷vvvv激情久 | 97视频人人澡人人爽 | 四虎欧美 | 91av大全| 99久久99久久精品国产片 | 久久久国产一区 | 丝袜护士aⅴ在线白丝护士 天天综合精品 | 国产一性一爱一乱一交 | 四月婷婷在线观看 | 九九99| 亚洲永久国产精品 | 免费高清男女打扑克视频 | 在线香蕉视频 | 97国产在线视频 | 色婷婷免费 | 在线视频app | 亚洲精品在线观看中文字幕 | 国产专区在线 | 亚洲精品在线国产 | 国产精品原创av片国产免费 | 国产精品资源网 | 69亚洲精品| 免费观看av网站 | 久久久精品 | 激情综合网色播五月 | 国产美女精品 | 久久天天躁狠狠躁亚洲综合公司 | 亚洲精品视频在线观看免费视频 | 成年人看片 | 中文字幕av最新 | 蜜臀久久99静品久久久久久 | 丁香色天天 | 日韩欧在线 | 久色婷婷 | 激情电影影院 | 国产精久久久久久妇女av | 精品一区91| 干狠狠 | 国产在线视频资源 | 国产精品一区二区三区99 | 亚洲精品免费在线观看 | a级国产乱理论片在线观看 伊人宗合网 | 四虎影视欧美 | 久久成人久久 | 日日操日日插 | 天堂av最新网址 | 日日夜夜精品免费视频 | 久草视频免费看 | 国产精品高清在线观看 | 中文字幕电影高清在线观看 | 成人免费网站在线观看 | 999男人的天堂 | 在线观看免费黄视频 | 91激情 | 中文字幕视频一区二区 | av黄色一级片 | 欧美日韩一区二区三区在线免费观看 | 黄色a级片在线观看 | 2020天天干天天操 | 国产精品久久久久久久久婷婷 | 中文字幕在线网 | 中午字幕在线观看 | 欧美另类交人妖 | 91精品国产91久久久久福利 | 欧美激情综合五月色丁香小说 | 国产在线观看免费观看 | 日韩在线观看免费 | 国产免费小视频 | 国产精品成 | 九九免费在线观看视频 | 人人舔人人爽 | 国产69精品久久99不卡的观看体验 | 亚洲成人av片 | 日韩毛片一区 | 九色在线视频 | av电影中文字幕在线观看 | 久久精品欧美一区二区三区麻豆 | 亚洲精区二区三区四区麻豆 | 日韩精品不卡 | 91成品人影院 | 久久99国产精品二区护士 | 免费在线观看亚洲视频 | 久久成视频| 在线观看视频91 | 在线观看视频中文字幕 | 网站在线观看你们懂的 | av片在线观看免费 | 中文字幕视频播放 | 欧美地下肉体性派对 | 在线观看视频你懂得 | 九九欧美视频 | 69国产成人综合久久精品欧美 | 久久精品国产美女 | 丁香六月在线 | 国产精品涩涩屋www在线观看 | 免费看黄色91 | 久久久久福利视频 | 九九久久精品视频 | 中文字幕精品一区二区精品 | 久久爱www. | 精品免费| 一区二区视频在线免费观看 | 婷婷精品 | 精品在线视频一区二区三区 | 蜜桃av久久久亚洲精品 | 97超碰总站 | 欧美日韩国产精品爽爽 | 狠狠色狠狠色综合日日小说 | 精品久久久久久亚洲综合网站 | 国产免费看 | 色综合天天综合在线视频 | 天天爱天天操天天爽 | 91九色性视频 | 中文字幕在线播放日韩 | 97超碰人人澡人人爱学生 | 欧美一区二区伦理片 | 探花视频免费观看 | 超碰在线人 | 亚洲国产丝袜在线观看 | 久久久国产精品麻豆 | 天天射天天色天天干 | 五月婷婷久久综合 | 在线观看国产永久免费视频 | 亚洲福利精品 | 久久久99精品免费观看 | 精品久久久久久久久久 | 粉嫩一区二区三区粉嫩91 | 亚洲成aⅴ人在线观看 | 婷婷亚洲激情 | 在线a视频 | 狠狠色噜噜狠狠 | 日本久久影视 | 美女在线免费视频 | 99免费看片| 91在线影院 | 天天干天天拍天天操天天拍 | 成人免费看视频 | 69国产精品视频免费观看 | 成人av午夜| 国产精品不卡在线观看 | 91精品啪啪| 狠狠操狠狠插 | 色97在线| 插插插色综合 | 免费观看的黄色片 | 玖玖国产精品视频 | 午夜精品久久久久久久99 | 97电影院在线观看 | 亚洲伦理中文字幕 | 久久久久成| 最新日韩在线 | 久久字幕精品一区 | 狠狠干狠狠久久 | 欧美精品久久天天躁 | 免费成人在线观看视频 | 精品电影一区 | bbb搡bbb爽爽爽 | 午夜精品电影 | www.啪啪.com| 91九色蝌蚪国产 | 久久er99热精品一区二区三区 | 手机在线看片日韩 | 国产精品欧美 | 中文字幕在线视频精品 | 韩国av免费看 | 狠狠色丁香婷综合久久 | 久久免费视频网 | 久久婷婷开心 | 成av在线| 91精品入口| 又紧又大又爽精品一区二区 | av在线播放国产 | 国产99久久久精品视频 | 欧美日韩免费一区 | 精产嫩模国品一二三区 | a在线观看免费视频 | 国产黄色片一级 | 亚洲精品在线免费播放 | 91久久国产露脸精品国产闺蜜 | 探花视频在线观看免费版 | 奇米四色影狠狠爱7777 | 粉嫩一二三区 | 欧美成人xxx | 91桃色免费视频 | 四虎影视国产精品免费久久 | 国产高清在线观看av | 日韩精品视频在线免费观看 | 69精品人人人人 | 国产黄a三级 | 中文字幕亚洲精品日韩 | 天堂av在线免费观看 | 四虎影视国产精品免费久久 | 国产成人资源 | 成人黄色短片 | 91精品国产高清自在线观看 | 精品国产一区二区三区四区在线观看 | av电影中文 | 欧美性做爰猛烈叫床潮 | 精品欧美一区二区三区久久久 | 日本精品久久久久中文字幕5 | 亚洲视频 一区 | 色噜噜日韩精品一区二区三区视频 | 免费三级在线 | 国产成人av在线 | 国产麻豆果冻传媒在线观看 | av高清一区二区三区 | 麻豆传媒精品 | 麻花天美星空视频 | 久久一本综合 | www.国产精品 | 黄色三级免费 | av黄色一级片 | 中文字幕一区二区在线播放 | 亚洲va欧洲va国产va不卡 | 人人射人人澡 | 国产做爰视频 | 成人亚洲欧美 | 91精品在线免费观看视频 | 五月花婷婷 | 99视频精品视频高清免费 | 欧美一区二区三区激情视频 | 91香蕉亚洲精品 | 97视频久久久 | 国产美女被啪进深处喷白浆视频 | 黄色官网在线观看 | 免费福利在线观看 | 国产视频二 | 国产一区二区三区四区在线 | 久久精品亚洲精品国产欧美 | 91精品一区在线观看 | 日日爱网址 | 天天爱天天色 | 视频一区二区三区视频 | 天天干天天做天天爱 | 色婷婷一| 色偷偷网站视频 | 色狠狠婷婷 | 欧美性猛片 | 黄色资源在线观看 | 日韩免费av在线 | 麻豆极品 | 国产综合精品久久 | 中文字幕一区二区三区四区在线视频 | 国产成人精品免高潮在线观看 | 搡bbbb搡bbb视频 | 国产精品一区二区三区观看 | 久久久久久久久久久综合 | 国产午夜精品久久久久久久久久 | 久久国产免费 | 2019中文在线观看 | 国产明星视频三级a三级点| 国产精品九九久久久久久久 | 国产一区视频在线播放 | 久久久久久久电影 | 亚洲美女精品区人人人人 | 久久久久亚洲精品男人的天堂 | av成人免费观看 | 中文字幕中文字幕 | 99久久精品无免国产免费 | 免费观看的av网站 | 国产91在线观 | 99精彩视频在线观看免费 | 日韩精品一卡 | 亚洲精品777 | 精品国产伦一区二区三区观看说明 | 色婷婷狠狠18 | 色五月成人 | 日韩午夜电影院 | 久久午夜影院 | 国产乱对白刺激视频不卡 | 韩日电影在线免费看 | 国内精品美女在线观看 | 一区二区三区三区在线 | 毛片永久免费 | 欧美日韩久久不卡 | 欧美成人精品欧美一级乱黄 | 国产不卡免费视频 | 日韩有码专区 | 免费成人结看片 | 1024手机看片国产 | 久久一区二区三区国产精品 | 热re99久久精品国产99热 | 国产精品视频免费观看 | 999久久国产精品免费观看网站 | 婷婷激情综合 | 国产女人免费看a级丨片 | 成人一级电影在线观看 | 中文国产字幕在线观看 | 97超碰资源 | 国产字幕在线播放 | 久久精品综合 | 成 人 黄 色 视频免费播放 | 美女视频永久黄网站免费观看国产 | 亚洲午夜久久久影院 | 天天操天天色综合 | 99在线免费观看视频 | www激情网 | 国产一级一级国产 | 久久免费看片 | 69中文字幕| 国产手机免费视频 | 美女黄濒 | 色99视频 | 香蕉影视app | 天天色天天干天天色 | 欧美日韩国产二区三区 | 亚洲午夜精品久久久 | 999久久久免费视频 午夜国产在线观看 | 国产 色 | 夜夜爱av | www久久久 | 永久免费视频国产 | 三级午夜片 | 午夜精品久久久久久久久久久久久久 | 久久黄色网页 | 中文字幕字幕中文 | 奇米网网址| 国产亚洲精品久久久久久大师 | 美女视频永久黄网站免费观看国产 | 91av在线免费观看 | 9999毛片 | 狠狠躁日日躁 | 国产看片免费 | 日韩精品中文字幕在线观看 | 国产视频不卡一区 | 黄色一级在线视频 | 欧美日高清视频 | 国产精品一区二区久久久 | 成年人免费在线看 | 日韩精品视频免费在线观看 | 日韩aⅴ视频 | 国产一区在线免费观看视频 | 又色又爽又黄 | 涩涩网站在线观看 | 99免费视频| 国产精品久久久久毛片大屁完整版 | 偷拍精偷拍精品欧洲亚洲网站 | 国产不卡网站 | 五月婷亚洲 | 国产精品毛片一区二区在线看 | a级黄色片视频 | 午夜电影中文字幕 | 国产精品美乳一区二区免费 | 久久国产热视频 | 亚洲永久精品一区 | www欧美色 | 免费一级片视频 | 中文字幕日韩无 | 99热官网 | 欧美亚洲成人xxx | 午夜少妇| www.香蕉视频 | 97在线看 | 国产特级毛片aaaaaa | 超碰在线最新网址 | 国产精品久久中文字幕 | 久久久久久久久久国产精品 | 欧美激情综合网 | 国产麻豆电影 | 国产美女精品视频 | 一区二区三区高清在线观看 | 精品视频www | 国产99久久久国产精品免费看 | 国产精品 日韩精品 | 亚洲国产精品500在线观看 | 97碰碰碰| 中文字幕日本在线观看 | 亚洲码国产日韩欧美高潮在线播放 | 国产中文字幕网 | 免费视频一二三 | 激情深爱五月 | av电影亚洲 | 免费av网址大全 | 操操操人人 | 国产小视频免费在线观看 | 国产精品美女999 | 日韩精品一卡 | 中文字幕高清有码 | 国产精品一区二区免费看 | 黄色1级毛片 | 18久久久久 | 国产精品久久99综合免费观看尤物 | 99精品视频在线观看播放 | 久久福利影视 | 国产精品成人久久久 | 欧美美女视频在线观看 | 亚洲永久国产精品 | 欧美日韩免费观看一区二区三区 | 97视频在线观看成人 | 日韩在线视频一区二区三区 | 久久国产影院 | 激情五月婷婷 | 欧美亚洲另类在线视频 | 青草视频在线播放 | 久热色超碰 | 在线播放精品一区二区三区 | 免费a网址 | 精品国产一区二区三区男人吃奶 | 国产精品丝袜 | 四虎国产精品免费 | 日韩欧美高清 | 亚洲精品国产免费 | 99 视频 高清| 日韩色区 | 欧美激情综合色综合啪啪五月 | 亚洲精品在线免费看 | 国产中文字幕一区 | 天天艹 | www夜夜操com | 国产日韩欧美在线 | 成人a v视频 | 97超碰网 | 亚洲精品av中文字幕在线在线 | 欧美日韩中字 | 激情综合一区 | 日日爽天天 | 亚洲精品动漫在线 | 99热精品国产一区二区在线观看 | 狠狠的日日 | 91综合久久一区二区 | 99国内精品久久久久久久 | 男女激情免费网站 | 国产精品1区2区3区在线观看 | 精品亚洲视频在线 | 人人爽人人澡 | 中文字幕一区二区在线观看 | 国产三级视频 | 精品国产伦一区二区三区 | 日韩欧美视频 | 色婷婷狠狠五月综合天色拍 | 天天操天天操天天干 | 中文字幕在线观看三区 | 久久久久久久久爱 | 久久亚洲私人国产精品va | 欧美日韩在线观看不卡 | 182午夜在线观看 | 一级a性色生活片久久毛片波多野 | 国产在线国偷精品产拍 | 成人超碰97 | 97免费在线观看 | 精品高清美女精品国产区 | 久久久av电影 | 在线成人免费电影 | 亚洲成av人影院 | 久草在线精品观看 | 欧美三级在线播放 | 亚洲理论在线观看电影 | 日本最新中文字幕 | 青青河边草观看完整版高清 | 毛片888 | 在线日本看片免费人成视久网 | 天天操天天操天天操天天 | 亚洲欧美日韩精品久久奇米一区 | 国产五月色婷婷六月丁香视频 | 久久久国产网站 | 亚洲综合小说 | 久久艹国产 | 天天干天天怕 | 黄色网址国产 | 国产人成在线视频 | 五月综合激情婷婷 | 在线观看一 | 亚洲精品成人网 | 欧美日韩一区久久 | 久久国产精品偷 | 日韩理论在线 | 黄色软件在线看 | 波多野结衣在线视频一区 | 色网站在线 | 日韩专区在线观看 | 日韩最新中文字幕 | 欧美一区二区精品在线 | 日韩欧美国产视频 | 日本美女xx| 国产第一页福利影院 | 最新av电影网址 | 97天堂网| 久久区二区 | 操操操操网 | 少妇性aaaaaaaaa视频 | 97品白浆高清久久久久久 | 亚洲天堂在线观看完整版 | 国产精品一区二区av | 国内精品国产三级国产aⅴ久 | 五月激情姐姐 | 91精品一区二区三区蜜臀 | 日韩中文字幕在线看 | 国产成人久久av免费高清密臂 | 99久久精品免费视频 | 在线免费观看的av网站 | 婷婷av电影 | 五月婷婷中文网 | 欧美一区二区伦理片 | 精品天堂av| 欧美日韩在线观看不卡 | 五月精品 | 国产淫片免费看 | 99久久久久免费精品国产 | 99精品在线免费观看 | 超碰免费成人 | 久久国产精品免费 | 久久综合精品国产一区二区三区 | 免费av的网站 | 欧美日韩裸体免费视频 | 精品999在线 | 国产一级视屏 | 精品国产伦一区二区三区观看说明 | 97色se | 久草免费新视频 | 在线免费观看视频你懂的 | 九九爱免费视频在线观看 |