在线看毛片视频-国产免费av在线-欧美日韩一区二区三区-国产成人无码av在线播放无广告-亚洲人va欧美va人人爽-国产第一草草-西班牙黄色片-四虎在线网站8848-最新av片免费网站入口-东京热无码中文字幕av专区-日本大人吃奶视频xxxx-欧美精品一区二区三区四区五区-国产片天天弄-国产免费内射又粗又爽密桃视频-欧美爱爱网站-日韩v欧美

當(dāng)前位置:雨林木風(fēng)下載站 > 技術(shù)開發(fā)教程 > 詳細(xì)頁面

如何Delphi中操縱撥號網(wǎng)絡(luò)

如何Delphi中操縱撥號網(wǎng)絡(luò)

更新時間:2019-07-04 文章作者:未知 信息來源:網(wǎng)絡(luò) 閱讀次數(shù):

用MODEM撥號上網(wǎng),仍是大多數(shù)個人網(wǎng)民選擇上網(wǎng)的方式.如果能在我們的應(yīng)用程序中管理撥號 網(wǎng)絡(luò)(如Foxmail、Sygate中的撥號功能),無疑將會方便我們的軟件用戶(不用再切換應(yīng)用程序, 運行撥號網(wǎng)絡(luò)),提高我們的軟件的友好性從而提高軟件的競爭力.


在WIN9X下,如果安裝了撥號網(wǎng)絡(luò),則在WINDOWS系統(tǒng)的系統(tǒng)目錄System下將有兩個撥號網(wǎng)絡(luò)管理 程序庫RasApi32.DLL和RasApi16.DLL,我們可利用其中的函數(shù)來獲取和設(shè)置撥號連接網(wǎng)絡(luò)的信息。在 Delphi幫助文件中,有相關(guān)函數(shù)的說明。


在此,我們要討論的管理項目有:

1、獲取當(dāng)前系統(tǒng)中可用的撥號連接名稱

2、新建撥號連接、修改撥號連接的屬性

3、獲取和設(shè)置撥號連接的撥號參數(shù)

4、用指定的撥號連接撥號、掛斷指定的撥號連接

5、獲取當(dāng)前活動的連接及其連接狀態(tài)零、獲取RasAPI函數(shù)執(zhí)行失敗的錯誤信息


RasAPI的調(diào)用接口是統(tǒng)一的,但對于不同的Windows版本,許多常量和數(shù)據(jù)結(jié)構(gòu)的定義是不同的。 如果使用的數(shù)據(jù)結(jié)構(gòu)與Windows版本不對應(yīng),RasAPI函數(shù)執(zhí)行會失敗;另外,其它原因如其它程序也 在使用同一個撥號連接進(jìn)行撥號等,也會造成RasAPI函數(shù)執(zhí)行失敗.鑒于此原因,我們需要先討論獲 取RasAPI函數(shù)執(zhí)行失敗的錯誤信息的函數(shù)。

當(dāng)一個RasAPI函數(shù)執(zhí)行結(jié)束時,會返回一個結(jié)果標(biāo)識,為0時表示執(zhí)行成功,否則作為一個錯誤標(biāo) 識符表示執(zhí)行失敗的原因。RasAPI函數(shù)RasGetErrorString可以根據(jù)錯誤標(biāo)識符返回其錯誤描述信息,

在中文WIN9X下可提供一個中文錯誤信息.

RasGetErrorString的函數(shù)原型為:

function RasGetErrorString (

uErrorValue : UINT;//錯誤標(biāo)識符

lpszErrorString : PChar;//錯誤提示信息的緩沖區(qū)

cBufSize : DWORD//錯誤提示信息的緩沖區(qū)大小

) : DWORD; stdcall;

function RasGetErrorString;external RasApiDll name 'RasGetErrorStringA';

( 注:RasApiDll = 'Rasapi32.dll'; )


為了方便,我們可以自己編寫一個函數(shù),用于獲取RasAPI函數(shù)執(zhí)行失敗的錯誤信息。在下面的例

子中,會經(jīng)常用到該函數(shù)。函數(shù)代碼如下所示:

{ 根據(jù)錯誤標(biāo)識符,獲取RasAPI函數(shù)執(zhí)行失敗的錯誤信息 }

function GetRasError( ErrorID : UINT ) : string;

var

buffer : array[ 0..255 ] of char;

begin

if 0 = RasGetErrorString( ErrorID

buffer

256 ) then

result := strpas( buffer )//如果能正確返回錯誤信息,則轉(zhuǎn)化為Pascal字符串

else//否則返回16進(jìn)制形式的錯誤代碼

result := 'GetRasError Failure:ErrorID=' + Format( '%x'

[ErrorID] );

end;


一、獲取當(dāng)前系統(tǒng)中可用的撥號連接名稱

即獲取系統(tǒng)中已建立的撥號連接的名稱,可用來讓用戶選擇使用哪個撥號連接進(jìn)行撥號.

可以用兩種方法來實現(xiàn).一種是利用RasAPI函數(shù);另一種是不用RasAPI函數(shù),直接在注冊表中查詢.


1、不用RasAPI函數(shù),直接在注冊表中查詢

在注冊表的HKEY_USERS\.Default\RemoteAccess\Addresses下,列出了已經(jīng)在撥號網(wǎng)絡(luò)中建立的撥號連接的名稱及其屬性設(shè)置,其中各項目的名稱即為可用的撥號連接的名稱;各項目的值即為各撥號連接的屬性設(shè)置,不過是二進(jìn)制串,筆者還看不懂.由此可見,我們只要讀出各項目的名稱即可獲取當(dāng)前系統(tǒng)中可用的撥號連接名稱.

var

registryTemp : TRegistry;

stringsTemp : TStringlist;

begin

registryTemp := TRegistry.Create;

stringsTemp := TStringlist.Create;

with registryTemp do

begin

RootKey := HKEY_USERS;//根鍵設(shè)置為HKEY_USERS

//如果存在子鍵.Default\RemoteAccess\Addresses

if OpenKey('.Default\RemoteAccess\Addresses'

false) then

GetValueNames( stringsTemp );//讀出各項目的名稱,即撥號連接名稱

end;

combobox1.Items.assign( stringsTemp );//顯示,供選擇

end;


2、用RasAPI函數(shù)

RasAPI函數(shù)RasEnumEntries可獲取當(dāng)前系統(tǒng)中可用的撥號連接名稱.其函數(shù)原型為

function RasEnumEntries(reserved : PChar;//保留字段

必須為NIL

lpszPhonebook : PChar;//電話本名稱

在Win9X下無作用

可為空字符串

lprasentryname : LPRASENTRYNAME;//接收撥號連接名稱的緩沖區(qū)

是一個RASENTRYNAME類型數(shù)組的指針

var lpcb : DWORD;//接收撥號連接名稱的緩沖區(qū)的大小(Bytes)

var lpcEntries: DWORD//實際獲得的撥號連接名稱的數(shù)目

) : DWORD; stdcall;

function RasEnumEntries;external RasApiDll name 'RasEnumEntriesA';


參數(shù)lprasentryname提供了一個RASENTRYNAME類型數(shù)組的指針,指向一個接收撥號連接名稱的緩沖區(qū),其中RASENTRYNAME及LPRASENTRYNAME的類型說明如下:


LPRASENTRYNAME = ^RASENTRYNAME;

RASENTRYNAME = record

dwSize : DWORD;//該結(jié)構(gòu)所占內(nèi)存的大小(Bytes)

一般設(shè)置為SizeOf(RASENTRYNAME)

szEntryName : array [ 0..RAS_MaxEntryName ] of char;//撥號連接名稱

end;

lpcb為緩沖區(qū)的大小,一般設(shè)置為dwSize的倍數(shù),倍數(shù)為可能有的連接的個數(shù).

lpcEntries實際的連接的個數(shù).


下面是一個應(yīng)用例子,列出了當(dāng)前系統(tǒng)中可用的撥號連接名稱.

注意,應(yīng)在RASENTRYNAME緩沖區(qū)的第一個RASENTRYNAME結(jié)構(gòu)中設(shè)置dwSize.

const MaxPhoneEntries = 10;//最多的撥號連接數(shù)目

var intIndex : integer;

PhoneEntries : array[ 0..MaxPhoneEntries - 1 ] of RASEntryName;

dwSize

dwEntries

dwResult : DWORD;

begin

//在RASENTRYNAME緩沖區(qū)的第一個RASENTRYNAME結(jié)構(gòu)中設(shè)置dwSize

PhoneEntries[ 0 ].dwSize := sizeof( RASEntryName );


dwSize := MaxPhoneEntries * sizeof( RASEntryName );//為緩沖區(qū)的大小

//調(diào)用RasAPI函數(shù),獲取當(dāng)前系統(tǒng)中可用的撥號連接名稱

dwResult := RasEnumEntries ( NIL

''

@PhoneEntries[ 0 ]

dwSize

dwEntries );


if dwResult <> 0 then

begin//RasAPI函數(shù),執(zhí)行錯誤

memo1.lines.add('RasEnumEntries錯誤:' + GetRasError( dwResult ));

exit;

end;


//顯示當(dāng)前系統(tǒng)中可用的撥號連接名稱

memo1.lines.add('共有' + inttostr( dwEntries ) + '個RAS連接,如下所示');

for intIndex := 0 to dwEntries -1 do

memo1.lines.add( strpas( PhoneEntries[ intIndex ].szEntryName ) );

end;


3、獲取默認(rèn)的撥號連接的名稱

默認(rèn)的撥號連接,即用戶在瀏覽器中設(shè)置的撥號連接,該連接可以認(rèn)為是用戶最常用撥號連接.

在注冊表的HKEY_USERS\.Default\RemoteAccess位置,有一個字符串名Profile,它對應(yīng)字符值即為HKEY_USERS\.Default\RemoteAccess\Addresses.


二、新建撥號連接、修改撥號連接的屬性

RasAPI函數(shù)RasCreatePhonebookEntry、RasEditPhonebookEntry通過調(diào)用Win9X的

新建撥號連接、修改撥號連接的設(shè)置界面,允許用戶新建撥號連接、修改撥號連接,具體的設(shè)置操作還要由系統(tǒng)來完成.

1、新建撥號連接

新建撥號連接的RasAPI函數(shù)為RasCreatePhonebookEntry,其函數(shù)原型為:

function RasCreatePhonebookEntry(

hwnd : THandle; //新建撥號連接窗口的父窗口的句柄,為NIL表示桌面(DeskTop)

lpszPhonebook: pchar//電話本名稱

在Win9X下無作用

可為空字符串

) : DWORD;stdcall;

function RasCreatePhonebookEntry;external RasApiDll name 'RasCreatePhonebookEntryA';


函數(shù)返回值為0表示執(zhí)行成功;否則為錯誤代碼.


下面是一個應(yīng)用例子,允許用戶新建一個撥號連接.

var

dwResult : DWORD;

begin

//在當(dāng)前窗口中新建撥號連接

dwResult := RasCreatePhonebookEntry( handle

'' );

if dwResult = 0 then

memo1.lines.add('新建撥號連接成功!')

else

memo1.lines.add('新建撥號連接失敗:!' + GetRasError( dwResult ))

end;


2、修改撥號連接的屬性

修改撥號連接的屬性的RasAPI函數(shù)為RasEditPhonebookEntry,其函數(shù)原型為:

function RasEditPhonebookEntry(

hwnd : THandle; //新建撥號連接窗口的父窗口的句柄,為NIL表示桌面(DeskTop)

lpszPhonebook: pchar;//電話本名稱,在Win9X下無作用

可為空字符串

lpszEntryName: pchar//撥號連接的名稱,如'163'、'169'等

) : DWORD; stdcall;

function RasEditPhonebookEntry;external RasApiDll name 'RasEditPhonebookEntryA';


函數(shù)返回值為0表示執(zhí)行成功;否則為錯誤代碼.

下面是一個應(yīng)用例子,允許用戶修改指定撥號連接的屬性.

var

dwResult : DWORD;

begin

//在當(dāng)前窗口中修改撥號連接的屬性

dwResult := RasEditPhonebookEntry( handle

''

'163' );

if dwResult = 0 then

memo1.lines.add('修改撥號連接成功!')

else

memo1.lines.add('修改撥號連接失敗:!' + GetRasError( dwResult ))

end;


三、獲取和設(shè)置撥號連接的撥號參數(shù)

用RasAPI函數(shù)RasGetEntryDialParams、RasSetEntryDialParams可以直接獲取和設(shè)置指定撥號連接的撥號參數(shù),其中包括用戶名稱和用戶密碼!

1、獲取撥號連接的撥號參數(shù)

獲取撥號連接的撥號參數(shù)RasAPI函數(shù)為RasGetEntryDialParams,其函數(shù)原型為:

function RasGetEntryDialParams(

lpszPhonebook: pchar;//電話本名稱,在Win9X下無作用

可為空字符串

pRASDIALPARAMS:LPRASDIALPARAMS;//撥號參數(shù),是一個RASDIALPARAMS類型的指針

var lpfPassword : WordBool//是否需要用戶密碼

) : DWORD; stdcall;

function RasGetEntryDialParams;external RasApiDll name 'RasGetEntryDialParamsA';


參數(shù)pRASDIALPARAMS是一個RASDIALPARAMS類型的指針,指向一個撥號連接的撥號參數(shù)數(shù)據(jù) 的緩沖區(qū),其中RASDIALPARAMS及LPRASDIALPARAMS的類型說明如下:

LPRASDIALPARAMS = ^RASDIALPARAMS;

RASDIALPARAMS = record

dwSize : DWORD;//該結(jié)構(gòu)所占內(nèi)存的大小(Bytes)

一般設(shè)置為SizeOf(RASDIALPARAMS)

szEntryName : array[0..RAS_MaxEntryName] of char;//撥號連接名稱

szPhoneNumber : array[0..RAS_MaxPhoneNumber] of char;//撥號號碼

szCallbackNumber : array[0..RAS_MaxCallbackNumber] of char;//回叫號碼

szUserName : array[0..UNLEN] of char;//用戶名稱

szPassword : array[0..PWLEN] of char;//用戶密碼

szDomain : array[0..DNLEN] of char;//域名

end;

函數(shù)返回值為0表示執(zhí)行成功;否則為錯誤代碼.

下面是一個應(yīng)用例子,獲取指定撥號連接的撥號參數(shù).

var

dwResult : DWORD;

RASDIALPARAMSData : RASDIALPARAMS;

NeedPWD : WordBool;

begin

//指定撥號連接的名稱

with RASDIALPARAMSData do

begin

dwSize := sizeof( RASDIALPARAMS );//結(jié)構(gòu)大小

szEntryName := '163';//指定撥號連接的名稱

szUserName := '';//其它五個參數(shù)初始化

szPassword := '';

szDomain := '';

szCallbackNumber := '';

szPhoneNumber := '';

end;

NeedPWD := true;//需要用戶密碼


//獲取指定撥號連接的撥號參數(shù)

dwResult := RasGetEntryDialParams( ''

@RASDIALPARAMSData

NeedPWD );


if dwResult <> 0 then //獲取指定撥號連接的撥號參數(shù)失敗

memo1.lines.add( '獲取'+StrPAS(RASDIALPARAMSData.szEntryName )+'撥號參數(shù)失敗:'

+ GetRasError( dwResult ))

else

begin//顯示指定撥號連接的撥號參數(shù)

memo1.lines.add( StrPAS(RASDIALPARAMSData.szEntryName )+'撥號參數(shù)如下');

memo1.lines.add( '用戶名稱:' + StrPAS(RASDIALPARAMSData.szUserName ));

memo1.lines.add( '用戶密碼:' + StrPAS(RASDIALPARAMSData.szPassword ));

memo1.lines.add( '域 名:' + StrPAS(RASDIALPARAMSData.szDomain ));

memo1.lines.add( '回叫號碼:' + StrPAS(RASDIALPARAMSData.szCallbackNumber ));

memo1.lines.add( '撥號號碼:' + StrPAS(RASDIALPARAMSData.szPhoneNumber ));

end;

end;

2、設(shè)置撥號連接的撥號參數(shù)

設(shè)置撥號連接的撥號參數(shù)RasAPI函數(shù)為RasSetEntryDialParams,其函數(shù)原型為:

function RasSetEntryDialParams(

lpszPhonebook: pchar;//電話本名稱,在Win9X下無作用

可為空字符串

pRASDIALPARAMS:LPRASDIALPARAMS;//撥號參數(shù),是一個RASDIALPARAMS類型的指針

var lpfPassword : WordBool//是否刪除用戶密碼

) : DWORD; stdcall;

function RasSetEntryDialParams;external RasApiDll name 'RasSetEntryDialParamsA';

參數(shù)pRASDIALPARAMS的說明同RasGetEntryDialParams.

參數(shù)lpfPassword的含義與RasGetEntryDialParams不同,在此表示是否刪除用戶密碼,為

TRUE時將原來的用戶密碼刪除.


函數(shù)返回值為0表示執(zhí)行成功;否則為錯誤代碼.

下面是一個應(yīng)用例子,設(shè)置指定撥號連接的撥號參數(shù).

var

dwResult : DWORD;

RASDIALPARAMSData : RASDIALPARAMS;

RemovePWD : WordBool;

begin

//指定撥號連接的撥號參數(shù)

with RASDIALPARAMSData do

begin

dwSize := sizeof( RASDIALPARAMS );//結(jié)構(gòu)大小

szEntryName := '163';//指定撥號連接的名稱

szUserName := 'MyName';//指定用戶名稱

szPassword := 'MyPassword';//指定用戶密碼

szDomain := 'MyDomain';//指定域名

szCallbackNumber := '';//指定回叫號碼

szPhoneNumber := '';//指定撥號號碼

end;

RemovePWD := false;//不需要刪除用戶密碼


//設(shè)置指定撥號連接的撥號參數(shù)

dwResult := RasSetEntryDialParams( ''

@RASDIALPARAMSData

RemovePWD );


if dwResult <> 0 then //設(shè)置指定撥號連接的撥號參數(shù)失敗

memo1.lines.add( '設(shè)置'+StrPAS(RASDIALPARAMSData.szEntryName )+'撥號參數(shù)失敗:' + GetRasError( dwResult ))

else

begin//顯示指定撥號連接的撥號參數(shù)

memo1.lines.add( StrPAS(RASDIALPARAMSData.szEntryName )+'撥號參數(shù)設(shè)置成功');

memo1.lines.add( '用戶名稱:' + StrPAS(RASDIALPARAMSData.szUserName ));

memo1.lines.add( '用戶密碼:' + StrPAS(RASDIALPARAMSData.szPassword ));

memo1.lines.add( '域 名:' + StrPAS(RASDIALPARAMSData.szDomain ));

memo1.lines.add( '回叫號碼:' + StrPAS(RASDIALPARAMSData.szCallbackNumber ));

memo1.lines.add( '撥號號碼:' + StrPAS(RASDIALPARAMSData.szPhoneNumber ));

end;

end;


四、用指定的撥號連接撥號、掛斷指定的撥號連接

1、用指定的撥號連接撥號

撥號有兩種方法,一種是調(diào)用撥號網(wǎng)絡(luò)中的撥號程序,就象用戶自己用鼠標(biāo)雙擊撥號連接名稱一 樣,用戶可以修改撥號號碼、用戶名稱和用戶密碼,最后由撥號網(wǎng)絡(luò)來完成撥號過程;另一個方法則 是調(diào)用RasAPI函數(shù).

(1)用撥號網(wǎng)絡(luò)中的撥號程序

在程序中可以用如下代碼:

winexec('rundll32.exe rnaui.dll

RnaDial 169'

SW_SHOWNORMAL);

其中字符串中的最后一個參數(shù)"169"為撥號連接的名稱。

(2)用RasAPI函數(shù)撥號 用撥號連接撥號的RasAPI函數(shù)為RasDial,其函數(shù)原型為:

function RasDial(

pRasDialExtensions : LPRASDIALEXTENSIONS;//在WIN9X下無用

可設(shè)置為NIL

lpszPhonebook : PChar;//電話本名稱,在Win9X下無作用

可為空字符串

lpRasDialParams : LPRASDIALPARAMS;//撥號參數(shù)

dwNotifierType : DWORD;//消息通知方式

handle : TRasDialFunc;//消息處理事件

var lphRasConn : DWORD//返回的成功連接的連接句柄

) : DWORD; stdcall;

function RasDial;external RasApiDll name 'RasDialA';


參數(shù)pRASDIALPARAMS的說明同RasGetEntryDialParams.

參數(shù)dwNotifierType表示消息通知方式.在撥號過程中,系統(tǒng)發(fā)出撥號事件消息可以通知撥號 進(jìn)度,因而需要提供接受消息的方式和處理消息的函數(shù).當(dāng)其值為$FFFFFFFF時,則參數(shù)handle被 視為一個窗口的句柄,事件消息被發(fā)生該窗口處理;當(dāng)其值為0時,handle被視為TRasDialFunc類型 的函數(shù)的指針;當(dāng)其值為1時,handle被視為TRasDialFunc1類型的函數(shù)的指針.

參數(shù)handle表示消息處理函數(shù)指針,其類型可以THandle、TRasDialFunc、TRasDialFunc1.當(dāng)該 參數(shù)不為NULL或NIL時,其代表的消息處理函數(shù)指針將接受撥號進(jìn)度通知消息;為NIL時,撥號過程由異步方式變?yōu)橥椒绞剑钡綋芴栠^程成功或失敗后RasDial函數(shù)才返回.詳細(xì)可參見Delphi幫助文件中關(guān)于RasDial函數(shù)的幫助。

當(dāng)撥號連接成功時,lphRasConn將表示其連接句柄.


函數(shù)返回值為0表示執(zhí)行成功;否則為錯誤代碼.

下面是一個應(yīng)用例子,按指定的撥號參數(shù)撥號.


var

RASDIALPARAMSData : RASDIALPARAMS;

dwResult : DWord;

RasCon : DWord;

begin

//指定撥號連接的撥號參數(shù)

with RASDIALPARAMSData do

begin

dwSize := sizeof( RASDIALPARAMS );//結(jié)構(gòu)大小

szEntryName := '163';//指定撥號連接的名稱

szUserName := 'MyName';//指定用戶名稱

szPassword := 'MyPassword';//指定用戶密碼

szDomain := 'MyDomain';//指定域名

szCallbackNumber := '';//指定回叫號碼

szPhoneNumber := '';//指定撥號號碼

end;


//用指定的撥號參數(shù)撥號,采用同步撥號方式

dwResult := RasDial( NIL

''

@RASDIALPARAMSData

0

NIL

RasCon );


if dwResult <> 0 then //設(shè)置指定撥號連接的撥號參數(shù)失敗

memo1.lines.add( '用'+StrPAS(RASDIALPARAMSData.szEntryName )+'撥號失敗:'

+ GetRasError( dwResult ))

else

memo1.lines.add( '用'+StrPAS(RASDIALPARAMSData.szEntryName )+'撥號成功!' );

end;


2、掛斷指定的撥號連接

掛斷撥號連接的RasAPI函數(shù)為RasHangUp,其函數(shù)原型為:

function RasHangUp(

hRasConn : DWORD//要掛斷的撥號連接的句柄

) : DWORD; stdcall;

function RasHangUp;external RasApiDll name 'RasHangUpA';

函數(shù)返回值為0表示執(zhí)行成功;否則為錯誤代碼.

下面是一個應(yīng)用例子,掛斷由RasDial建立的撥號連接.


//掛斷由RasDial建立的撥號連接

dwResult := RasHangUp( RasCon );

if dwResult <> 0 then //掛斷失敗

memo1.lines.add( '掛斷失敗:' + GetRasError( dwResult ))

else

memo1.lines.add( '掛斷成功!');


五、獲取當(dāng)前活動的連接及其連接狀態(tài)

1、獲取當(dāng)前活動的連接

獲取當(dāng)前活動的連接的RasAPI函數(shù)為RasEnumConnections,其函數(shù)原型為:

DWORD RasEnumConnections(
  LPRASCONN lprasconn,     // buffer to receive connections
                           //  data
  LPDWORD lpcb,            // size in bytes of buffer
  LPDWORD lpcConnections   // number of connections written
                           //  to buffer
); 

溫馨提示:喜歡本站的話,請收藏一下本站!

本類教程下載

系統(tǒng)下載排行

在线看毛片视频-国产免费av在线-欧美日韩一区二区三区-国产成人无码av在线播放无广告-亚洲人va欧美va人人爽-国产第一草草-西班牙黄色片-四虎在线网站8848-最新av片免费网站入口-东京热无码中文字幕av专区-日本大人吃奶视频xxxx-欧美精品一区二区三区四区五区-国产片天天弄-国产免费内射又粗又爽密桃视频-欧美爱爱网站-日韩v欧美
  • <li id="86scu"><menu id="86scu"></menu></li>
    <li id="86scu"></li>
    <button id="86scu"></button>
  • <s id="86scu"></s><button id="86scu"><menu id="86scu"></menu></button>
  • 久久久99精品视频| 日本黄xxxxxxxxx100| 老子影院午夜伦不卡大全| 欧美日韩一区二区三区69堂| av天堂永久资源网| 热久久精品国产| 日韩免费毛片视频| 国模杨依粉嫩蝴蝶150p| 欧美性猛交久久久乱大交小说 | 日韩最新中文字幕| 午夜一级免费视频| 自拍偷拍视频在线| av 日韩 人妻 黑人 综合 无码| 国产免费xxx| 久久人人爽人人爽人人av| 国产成人在线小视频| 久久久久久久中文| 激情网站五月天| 免费激情视频在线观看| 午夜免费福利在线| 亚洲国产欧美91| 日韩日韩日韩日韩日韩| 色婷婷综合久久久久中文字幕| 亚洲五月天综合| 97超碰人人看| av之家在线观看| 成人羞羞国产免费网站| 毛片毛片毛片毛| 男的插女的下面视频| 超碰av在线免费观看| a级黄色片网站| 久久久久人妻精品一区三寸| 成人性生交免费看| 蜜臀av色欲a片无码精品一区| 欧美深夜福利视频| 天天干天天玩天天操| 日本免费a视频| 孩娇小videos精品| 美脚丝袜脚交一区二区| 久久这里只精品| 激情图片qvod| 欧美三级理论片| 成人午夜免费在线| 国产三级中文字幕| 欧美在线aaa| 北条麻妃在线视频观看| 日本老太婆做爰视频| 欧美精品性生活| 免费观看精品视频| 国产精品三级一区二区| 亚洲一区二区三区四区五区xx| 野外做受又硬又粗又大视频√| 国产福利在线免费| 黄色片视频在线免费观看| 欧美日韩一区二区三区电影| 婷婷激情四射五月天| 欧美s码亚洲码精品m码| 老子影院午夜伦不卡大全| 超碰在线免费观看97| 超碰中文字幕在线观看| 尤蜜粉嫩av国产一区二区三区| 99福利在线观看| 国产亚洲精品网站| 亚洲熟妇av一区二区三区漫画| 成人在线播放网址| 2022中文字幕| 日本香蕉视频在线观看| 91亚洲精品国产| 日本一级黄视频| 蜜桃视频一区二区在线观看| 亚洲色图都市激情| 国产成人一二三区| 青青草原网站在线观看| 男人天堂网站在线| 成人免费观看cn| 国产日产欧美视频| 男人亚洲天堂网| 色综合手机在线| 九色porny自拍| 亚洲一区二区中文字幕在线观看| 在线免费看污网站| 欧美性受xxxx黑人猛交88| 国产成人免费高清视频| 成人免费视频91| 成年网站在线免费观看| 超碰在线公开97| 亚洲成年人专区| 欧美一级片免费播放| 99视频精品免费| 在线观看中文av| 无码日本精品xxxxxxxxx| 无码人妻丰满熟妇区96| 在线免费av播放| 国产亚洲精品久久久久久久| www.中文字幕在线| 一区二区三区四区久久| 97超碰人人澡| 在线免费观看av网| 国产精品国三级国产av| 国产三级三级三级看三级| 男女啪啪的视频| 成年人免费在线播放| 午夜免费视频网站| 精品99在线视频| 久久久久久久久久久久久国产| 色欲av无码一区二区人妻| 九九热精品国产| 97成人在线观看视频| 国产乱子伦精品视频| 久热精品在线播放| www.日本在线播放| 咪咪色在线视频| 日本在线一二三区| 欧美在线观看成人| 9191国产视频| 三年中文高清在线观看第6集| 欧美日韩在线中文| 国产精品久久..4399| 一本二本三本亚洲码| 在线免费视频一区| 丁香婷婷激情网| 欧美aⅴ在线观看| 日韩精品一区二区三区四| 久久久久久蜜桃一区二区| 国产v亚洲v天堂无码久久久| 国产h视频在线播放| 日韩极品视频在线观看| 四虎4hu永久免费入口| 三级av免费看| 亚洲最新免费视频| 青青草原国产在线视频| 欧美性猛交xxx乱久交| 国产极品美女高潮无套久久久| www在线观看免费| 成年人午夜视频在线观看| 一卡二卡三卡视频| 很污的网站在线观看| 亚洲美免无码中文字幕在线| 久久久久福利视频| 菠萝蜜视频在线观看入口| 天天做天天躁天天躁| 欧美日韩福利在线| 欧美激情 国产精品| aa在线免费观看| 一级在线免费视频| 天天做天天干天天操| 日韩精品福利片午夜免费观看| 四虎精品欧美一区二区免费| 国产精品三级一区二区| 国产av麻豆mag剧集| 日韩手机在线观看视频| 色播五月激情五月| 日本中文字幕在线不卡| 国产爆乳无码一区二区麻豆| koreanbj精品视频一区| 天天插天天操天天射| 国产麻豆电影在线观看| 免费高清一区二区三区| 成年人免费在线播放| 日本一二三四区视频| 水蜜桃色314在线观看| 亚洲精品视频导航| h无码动漫在线观看| 国产第一页视频| 蜜臀av.com| 99免费视频观看| 成年在线观看视频| 超碰在线公开97| 日韩av高清在线看片| 做a视频在线观看| 欧美成人xxxxx| 中国一级黄色录像| 黄色片在线免费| 欧美a级免费视频| 亚洲性图一区二区| 欧美一级视频免费看| 亚洲成人手机在线观看| 人妻熟妇乱又伦精品视频| 三年中文高清在线观看第6集| 欧美国产激情视频| 美女黄色免费看| 九一精品久久久| 91淫黄看大片| 国产在线精品91| 成人黄色片免费| 中文字幕一区二区三区四区五区人| 国产在线观看福利| 久激情内射婷内射蜜桃| 永久免费看av| 97精品国产97久久久久久粉红| 天天插天天操天天射| 乱子伦视频在线看| aa在线观看视频| 香港三级韩国三级日本三级| 老司机午夜网站| 黄色一级片国产| 97视频在线免费| 国产一区二区在线视频播放| av女优在线播放| 久草热视频在线观看|