韩剧1988免费观看全集_久久影视三级福利片_亚洲视频在线观看免费_在线观看欧美日韩_国产亚洲激情在线_亚洲精品美女久久久_欧美国产日韩一区二区在线观看_91在线观看免费高清完整版在线观看_日韩av免费看_国产又爽又黄的激情精品视频_琪琪亚洲精品午夜在线_欧美性猛xxx_不卡毛片在线看_国产亚洲日本欧美韩国_91国内在线视频_精品国产福利视频

當(dāng)前位置:蘿卜系統(tǒng)下載站 > 技術(shù)開發(fā)教程 > 詳細(xì)頁面

用WinSock控件編寫網(wǎng)絡(luò)聊天器

用WinSock控件編寫網(wǎng)絡(luò)聊天器

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

一.認(rèn)識(shí)C++Builder中的WinSock控件及其相關(guān)類

  WinSock是一組用C語言寫的API,用于通過Internet進(jìn)行數(shù)據(jù)傳輸。通過WinSock編程可以獲得更大的靈活性。編寫WinSock應(yīng)用程序本來是很麻煩的,不過,在C++ Builder 5.0中,您并不需要直接與WinSock中的API打交道,因?yàn)镃++ Builder 5.0新增加了TClientSocket控件和TserverSocket控件,這兩個(gè)控件封裝了Windows的有關(guān)API,使得對(duì)WinSock的訪問大大簡化。用Socket 建立的連接是建立在TCP/IP協(xié)議基礎(chǔ)上的,同時(shí)也支持其它相關(guān)的協(xié)議,如XNS、DECnet以及 IPX/SPX等。Socket的連接必須要建立有一個(gè)服務(wù)器端(Server)和一個(gè)客戶端(Client)。在C++ Builder 5.0中分別用TClientSocket控件和TServerSocket控件來操縱客戶端Socket與服務(wù)器端Socket的 連接和通信。這兩個(gè)控件用于管理服務(wù)器和客戶的連接,它們本身并不是Socket對(duì)象,操縱 Socket對(duì)象的是TCustomWinSocket及其派生類,如TClientWinSocket、TserverWinSocket . TServerClientWinSocket等。

  Socket之間的連接可以分為三種類型:客戶端連接、監(jiān)聽連接以及 服務(wù)器端連接,所謂客戶端連接,是指由客戶端的Socket提出連接請(qǐng)求,要連接的目標(biāo)是服務(wù) 器端的Socket。為此,客戶端的Socket必須首先描述它要連接的服務(wù)器端Socket(主要是指服務(wù)器 端Socket的地址和端口號(hào)),然后再定位所要連接的服務(wù)器端Socket,找到以后,就向服務(wù)器端 Socket請(qǐng)求連接。當(dāng)然,服務(wù)器端的Socket此時(shí)未必正好處于準(zhǔn)備好狀態(tài),不過,服務(wù)器端的 Socket會(huì)自動(dòng)維護(hù)客戶請(qǐng)求連接的隊(duì)列,然后在它認(rèn)為合適的時(shí)候向客戶端Socket發(fā)出“允許連接” (Accept)的信號(hào),這時(shí)客戶端Socket與服務(wù)器端Socket的連接就建立了。所謂監(jiān)聽連接,服務(wù)器端 Socket并不定位具體的客戶端Socket,而是處于等待連接的狀態(tài)。當(dāng)服務(wù)器端Socket監(jiān)聽到或者說 接收到客戶端Socket的連接請(qǐng)求,它就響應(yīng)客戶端Socket的請(qǐng)求建立一個(gè)新的Socket句柄并與客戶 端連接,而服務(wù)器端Socket繼續(xù)處于監(jiān)聽狀態(tài),還可以接收其它客戶端Socket的連接請(qǐng)求。所謂服 務(wù)器端連接,是指當(dāng)服務(wù)器端Socket接收到客戶端Socket的連接請(qǐng)求后,就把服務(wù)器端Socket的描述 發(fā)給客戶端,一旦客戶端確認(rèn)了此描述,連接就建立了。在本文中的聊天程序用的就是監(jiān)聽連接, 即服務(wù)器設(shè)置連接個(gè)數(shù)后進(jìn)行監(jiān)聽,客戶端進(jìn)行對(duì)服務(wù)器端的連接,這樣就可以進(jìn)行相互通信了。

二.TServerSocket和TClientSocket控件的屬性

1.ServerSocket的控件屬性

threadcachsize:創(chuàng)建服務(wù)器線程的最在數(shù)目。
port:確定服務(wù)器的監(jiān)視端口。
service:客戶通過此屬性來識(shí)別服務(wù)器端口。

2.ClientSocket的控件屬性

Socket:此屬性參數(shù)是應(yīng)用程序之間通信的端點(diǎn)。
Address:此屬性參數(shù)為字符串類型,客戶端確定服務(wù)器端的IP地址。
Host:服務(wù)器端的主機(jī)名稱。
Post:服務(wù)器端的監(jiān)視端口。
Servce:用來識(shí)別服務(wù)器端口。
Active:確定Socket是否可用(true表示可用)。
ClientType:指定客戶機(jī)采用哪一種方式(異步/同步)來通信。

三.ServerSocket和ClientSocket控件的事件

1.ServerSocket的事件
onclientconnect:客戶與服務(wù)器連接且服務(wù)器接收申請(qǐng)后,產(chǎn)生此事件。
onclientdisconnect:當(dāng)和服務(wù)器連接的某一個(gè)客戶機(jī)關(guān)閉連接后產(chǎn)生此事件。
onGetSocket:一個(gè)服務(wù)器可以接收多個(gè)客戶Socket的連接申請(qǐng)。
onGetThread:當(dāng)ClientType屬性值設(shè)為StrThreadBlocking時(shí),服務(wù)器會(huì)產(chǎn)生一個(gè)單獨(dú)的線程來與客戶的連接。
onAccept:服務(wù)器接收客戶的連接申請(qǐng)后,產(chǎn)生此事件。
onClientRead:客戶機(jī)發(fā)送數(shù)據(jù)到服務(wù)器時(shí)產(chǎn)生的事件。

2.ClentSocket事件
onConnect:當(dāng)客戶端與服務(wù)器端連接上后,產(chǎn)生此事件。
onConnecing:當(dāng)客戶端與服務(wù)器端進(jìn)行連接操作時(shí),產(chǎn)生此事件。
onDisconnect:當(dāng)客戶端關(guān)閉操作后產(chǎn)生此事件。
onError:在客戶與服務(wù)器在建立和通信過程中,如果產(chǎn)生錯(cuò)誤時(shí),產(chǎn)生此事件。
onLookup:當(dāng)客戶在計(jì)算機(jī)網(wǎng)絡(luò)中尋找服務(wù)器時(shí),產(chǎn)生此事件。
onRead:數(shù)據(jù)到達(dá)時(shí)產(chǎn)生此事件。

四.ServerSocket和ClientSocket的方法

1.Open方法
  此方法適用于ServerSocket和CilentSocket進(jìn)行建立連接,原型如下: void-Fastcall open(void);

2.Close方法
  此方法適用于ServerSocket和CilentSocket進(jìn)行關(guān)閉連接,原型如下: void-Fastcall close(void);

五.編寫聊天程序

  打開C++Builder 5.0新建一個(gè)工程,新建一個(gè)Form1窗體,在Form1窗體中添加以下控件:

ClientSocket控件:
1個(gè) ServerSocket控件:
1 個(gè) Button控件:
4個(gè) Label控件:
2個(gè) Memo控件:
1個(gè) Edit控件:
2個(gè) TreeView控件:
1個(gè) StatusBar控件:
1個(gè) 添加控件

各控件屬設(shè)置如下:
Form1窗體:Caption="網(wǎng)絡(luò)聊天器".
ServerSocket: Name=ServerSocket1;port=10000;ServerType=stNonBlocking;ThreadCacheSize=10. ClientSocket: Name=ClientSocket1;port=10000;ClientType=stNonBlocking. Mome:Name=Mome1;ScrollBars=ssVertical. TreeView:Name=TreeView1; Button:
第一個(gè):Name=Btnlisten;Caption="監(jiān)聽";
第二個(gè):Name=Btnconnect;Caption="連接";
第三個(gè):Name=Btndisconnect;Caption="斷開";
第一個(gè):Name=BtnExit;Caption="退出"; Label:
第一個(gè):Name=Label1;Caption="發(fā)送";
第二個(gè): Name=Label2;Caption="在線客戶". Edit:
第一個(gè):Name=Edit1;
第二個(gè): Name=Edit2; StatusBar:Name=StatusBar1;

設(shè)置好以上屬性值,就可以進(jìn)行代碼的編寫了,源程序代碼如下:

//-------------------------- //"Unit1.h"的源程序 //-------------------
#ifndef Unit1H
#define Unit1H
//--------------------------------------------------------------------
#include <Classes.hpp>
#include <Controls.hpp>
#include <StdCtrls.hpp>
#include <Forms.hpp>
#include <ScktComp.hpp>
#include <ExtCtrls.hpp>
#include <ComCtrls.hpp>
#include <Menus.hpp>
#include <ToolWin.hpp>
//---------------------------------------------------------------------
class TForm1 : public TForm
{
__published: // IDE-managed Components
TClientSocket *ClientSocket1;
TServerSocket *ServerSocket1;
TMemo *Memo1;
TStatusBar *StatusBar1;
TEdit *Edit1;
TLabel *Label1;
TTreeView *TreeView1;
TLabel *Label2;
TEdit *Edit2;
TButton *Btnlisten;
TButton *Btnconnect;
TButton *Btndisconnect;
TButton *BtnExit;
void __fastcall FormCreate(TObject *Sender);
void __fastcall ClientSocket1Connect(TObject *Sender,
TCustomWinSocket *Socket);
void __fastcall ServerSocket1Accept(TObject *Sender,
TCustomWinSocket *Socket);
void __fastcall ServerSocket1ClientDisconnect(TObject *Sender,
TCustomWinSocket *Socket);
void __fastcall ClientSocket1Disconnect(TObject *Sender,
TCustomWinSocket *Socket);
void __fastcall ClientSocket1Error(TObject *Sender,
TCustomWinSocket *Socket, TErrorEvent ErrorEvent,
int &ErrorCode);
void __fastcall ClientSocket1Read(TObject *Sender,
TCustomWinSocket *Socket);
void __fastcall ServerSocket1ClientRead(TObject *Sender,
TCustomWinSocket *Socket);
void __fastcall Edit1KeyDown(TObject *Sender, WORD &Key,
TShiftState Shift);
void __fastcall ClientSocket1Lookup(TObject *Sender,
TCustomWinSocket *Socket);
void __fastcall TreeView1Change(TObject *Sender, TTreeNode *Node);
void __fastcall BtnlistenClick(TObject *Sender);
void __fastcall BtnconnectClick(TObject *Sender);
void __fastcall BtndisconnectClick(TObject *Sender);
void __fastcall BtnExitClick(TObject *Sender);
private:
bool IsServer;
String Server;
// User declarations
public: // User declarations
__fastcall TForm1(TComponent* Owner);
};
//-------------------------------------------------------------------------
extern PACKAGE TForm1 *Form1;
//-------------------------------------------------------------------------
#endif //"Unit1.cpp"源程序 //-----------------------------------------------
#include <vcl.h>
#include <stdio.h>
#pragma hdrstop #include "Unit1.h"
//--------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
//--------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
: TForm(Owner)
{
IsServer=false;
Server="";
}
//--------------------------------------------------------------------------
void __fastcall TForm1::FormCreate(TObject *Sender)
{
Btndisconnect->Enabled=false;
} //------------------------------------------------------------------------

//當(dāng)用戶提出連接請(qǐng)求后,客戶端會(huì)觸發(fā)OnCreate事件
void __fastcall TForm1::ClientSocket1Connect(TObject *Sender,
TCustomWinSocket *Socket)
{
StatusBar1->SimpleText="連接到:"+Server;
TreeView1->Items->Add(TreeView1->Selected ,Server);
Memo1->Lines->Clear();
//定義mouse的類型
Form1->Cursor=crDefault ;
Edit1->Cursor=crDefault;
Memo1->Cursor=crDefault;
//產(chǎn)生一個(gè)新的監(jiān)聽 }
//-------------------------------------------------------------------------
//在服務(wù)器接受了客戶的請(qǐng)求后會(huì)觸發(fā)OnAccept事件
void __fastcall TForm1::ServerSocket1Accept(TObject *Sender,
TCustomWinSocket *Socket)
{ Memo1->Lines->Clear();
IsServer=true;
StatusBar1->SimpleText="連接到:"+Socket->LocalHost;
TreeView1->Items->Add(TreeView1->Selected ,Socket->LocalHost);
}
//-------------------------------------------------------------------------
//斷開后繼續(xù)監(jiān)聽
void __fastcall TForm1::ServerSocket1ClientDisconnect(TObject *Sender,
TCustomWinSocket *Socket)
{
StatusBar1->SimpleText="正在監(jiān)聽...";
}
//-------------------------------------------------------------------------
//客戶端關(guān)閉連接后產(chǎn)生的事件
void __fastcall TForm1::ClientSocket1Disconnect(TObject *Sender,
TCustomWinSocket *Socket)
{
Btnlisten->Enabled=true;
Btnconnect->Enabled=true;
Btndisconnect->Enabled=false;
StatusBar1->SimpleText="";
}
//-------------------------------------------------------------------------
// 通信過程中產(chǎn)生錯(cuò)誤時(shí)產(chǎn)生的事件
void __fastcall TForm1::ClientSocket1Error(TObject *Sender,
TCustomWinSocket *Socket, TErrorEvent ErrorEvent, int &ErrorCode)
{
ShowMessage("錯(cuò)誤!!! 無法連接到服務(wù)器");
ErrorCode=0;
Btnlisten->Enabled=true;
Btnconnect->Enabled=true;
Btndisconnect->Enabled=false;
StatusBar1->SimpleText="";
//定義mouse的類型
Form1->Cursor=crDefault ;
Edit1->Cursor=crDefault;
Memo1->Cursor=crDefault;
Form1->Caption ="網(wǎng)絡(luò)聊天器";
}
//-------------------------------------------------------------------------
//客戶端接收數(shù)據(jù)
void __fastcall TForm1::ClientSocket1Read(TObject *Sender,
TCustomWinSocket *Socket)
{
Memo1->Lines->Add(Socket->ReceiveText());
}
//---------------------------------------------------------------------------
//服務(wù)器端接收數(shù)據(jù)
void __fastcall TForm1::ServerSocket1ClientRead(TObject *Sender,
TCustomWinSocket *Socket)
{
Memo1->Lines->Add(Socket->ReceiveText());
}
//-------------------------------------------------------------------------

//在建立連接后,雙方就可以在Edit1中輸入談話內(nèi)容開始進(jìn)
//行交談了,按下Enter鍵后,將所在行的文本發(fā)送出去
void __fastcall TForm1::Edit1KeyDown(TObject *Sender, WORD &Key,
TShiftState Shift)
{
AnsiString Data;
if(Key==VK_RETURN)
{if (Edit2->Text!="") //在沒有選擇發(fā)送的主機(jī)名時(shí)不能進(jìn)行發(fā)送操作
{if(IsServer) //服務(wù)器端發(fā)出的數(shù)據(jù)
{Data= "["+TimeToStr(Now())+"]:("+ServerSocket1->Socket->LocalHost+")對(duì)"+"("+Edit2->Text+")"+"說:"+Edit1->Text;
ServerSocket1->Socket->Connections[TreeView1->Selected->Index]->SendText(Data);
Memo1->Lines->Add(Data);
Edit1->Text="";}
else //客戶端發(fā)出的數(shù)據(jù)
{ Data="["+TimeToStr(Now())+"]:("+ClientSocket1->Socket->LocalHost+")對(duì)"+"("+Edit2->Text
+")"+"說:"+Edit1->Text;
ClientSocket1->Socket->SendText(Data);
Memo1->Lines->Add(Data);
Edit1->Text="";}
}
else
ShowMessage("錯(cuò)誤!!! 沒有選擇發(fā)送的主機(jī)名");
}
}
//---------------------------------------------------------------------------
//在網(wǎng)絡(luò)中搜索服務(wù)器端時(shí)產(chǎn)生的事件
void __fastcall TForm1::ClientSocket1Lookup(TObject *Sender,
TCustomWinSocket *Socket)
{ //定義mouse的類型
Form1->Cursor=crHourGlass ;
Edit1->Cursor=crHourGlass;
Memo1->Cursor=crHourGlass;
}
//選擇發(fā)向數(shù)據(jù)的主機(jī)名
void __fastcall TForm1::TreeView1Change(TObject *Sender, TTreeNode *Node)
{
Edit2->Text=TreeView1->Selected->TreeView->Selected->Text;
StatusBar1->SimpleText="連接到:"+TreeView1->Selected->TreeView->Selected->Text;
} //監(jiān)聽
void __fastcall TForm1::BtnlistenClick(TObject *Sender)
{
ClientSocket1->Active=false;
ServerSocket1->Active=true;
StatusBar1->SimpleText="正在監(jiān)聽...";
Form1->Caption =Form1->Caption+"--服務(wù)器端";
Btnlisten->Enabled=false;
Btnconnect->Enabled=false;
}
//連接
void __fastcall TForm1::BtnconnectClick(TObject *Sender)
{
if(InputQuery("連接到服務(wù)器","輸入服務(wù)器地址:",Server))
{
if(Server.Length() >0){
ClientSocket1->Host=Server; //確定服務(wù)器的主機(jī)名
ClientSocket1->Active=true;
Btnlisten->Enabled=false;
Btnconnect->Enabled=false;
Btndisconnect->Enabled=true;
Form1->Caption =Form1->Caption+"--客戶端";}
}
}
//斷開
void __fastcall TForm1::BtndisconnectClick(TObject *Sender)
{
//按下斷開
ClientSocket1->Close();
}
//---------------------------------------------------------------------------
//退出
void __fastcall TForm1::BtnExitClick(TObject *Sender)
{
ClientSocket1->Close();
ServerSocket1->Close();
Form1->Close();
}
//編寫完程序代碼后,就要對(duì)源程序進(jìn)行編譯了,編譯方法如下:

1.在菜單 project \ options 下,選擇Packages 頁,去掉Build with runtime packages 項(xiàng)的勾, 然后選擇Linker 頁,去掉 Use dynamic RTL 的勾,然后按“確定”按鈕。
2.在菜單 project \ options 下,選擇 Compiler 頁,按下 Release 按鈕,然后按“確定”按鈕。
3.在菜單 Run \ Run (或F9) 進(jìn)行編譯就行。 用這種方法編譯的可執(zhí)行文件容量比較小, 而且可以在沒有安裝C++的系統(tǒng)中運(yùn)行。在運(yùn)行時(shí) 可單機(jī)也可多機(jī)操作,但必須要有一個(gè)主機(jī)打開程序的“監(jiān)聽”,其它客戶機(jī)進(jìn)行連接就行了。 快快來下載,編寫自己的聊天程序吧!

溫馨提示:喜歡本站的話,請(qǐng)收藏一下本站!

本類教程下載

系統(tǒng)下載排行

網(wǎng)站地圖xml | 網(wǎng)站地圖html
免费不卡中文字幕在线| 欧美日韩视频精品二区| 九九视频精品全部免费播放| 亚洲欧美日韩在线一区| 国产精品欧美日韩| 精品国产一区二区亚洲人成毛片| 成人做爰www免费看视频网站| 国产视频网站一区二区三区| 999久久精品| 一道本成人在线| 超碰超碰97| 99热成人精品热久久66| 在线观看中文| 欧美尺度大的性做爰视频| 精品网站www| 亚洲精华国产精华精华液网站| 99久久夜色精品国产亚洲狼| 毛片大全在线观看| 亚洲国产日韩在线一区模特| 亚洲色大成网站www久久九九| 五月天av网站| 黄页网站大全在线免费观看| 男人添女荫道口女人有什么感觉| 中国人xxxxx69免费视频| 日韩高清精品免费观看| 日韩久久精品视频| 国产精品羞羞答答xxdd| 一级淫片免费看| 国产最新自拍视频| 日韩精品在线第一页| 国产美女性感在线观看懂色av| 在线观看视频网站你懂得| 蜜臀久久99精品久久久| 精产国品自在线www| 久久视频在线观看中文字幕| 成人免费在线视频播放| 久久色中文字幕| 亚洲欧美日本国产专区一区| 可以免费看av的网址| 欧美人交a欧美精品| 欧美日韩在线直播| 奇米影视777在线欧美电影观看| 午夜精品婷婷| 91情侣在线视频| 欧美猛男超大videosgay| 欧美久久天堂| 国产亚洲视频在线观看| 免费观看国产精品| 国产精品对白| 国产欧美日韩精品一区二区免费| 97人妻精品一区二区三区动漫| 黑人与亚洲人色ⅹvideos| 国模精品系列视频| 精品国产乱码久久久久久蜜臀网站| 中文字幕亚洲精品| 亚洲综合视频在线播放| 黄色网址网站| 视频一区二区在线播放| 激情六月丁香婷婷| 狠狠狠综合7777久夜色撩人| 99精品综合| 欧美自拍偷拍第一页| 国产亚洲aⅴaaaaaa毛片| gogo久久日韩裸体艺术| 波多野结衣家庭教师在线播放| 91偷拍精品一区二区三区| 日韩精品免费观看| 天堂中文av在线资源库| 麻豆一区区三区四区产品精品蜜桃| 精品色999| 欧美日本亚洲| 午夜在线观看视频| 久久亚洲国产视频| 在线āv视频| 91国产丝袜播放在线| 国产欧美精品在线| 欧美色片在线观看| 欧美日韩免费网站| 大美女一区二区三区| 米奇777四色精品人人爽| 成人激情免费视频| 欧美日韩午夜电影网| 亚洲国产91精品在线观看| 国产一区二区三区四区五区美女| 国产福利亚洲| 波多野结衣中文字幕久久| 欧美激情欧美狂野欧美精品| 国产美女精彩久久| 四虎永久国产精品| 色94色欧美sute亚洲线路一ni| 欧美肥妇bbwbbw| 精品国产乱码91久久久久久网站| 黄色三级视屏| 黄色一级大片在线免费看产| 免费看的黄网站| 在线观看麻豆蜜桃| 女人抽搐喷水高潮国产精品| 香蕉久久一区二区不卡无毒影院| 中文字幕视频精品一区二区三区| 蜜桃久久精品一区二区| 久久免费视频一区| crdy在线观看欧美| 天天综合网在线观看| 少妇久久久久| 亚洲人成人一区二区三区| 国产黄色片大全| 久久午夜电影网| 欧美激情精品久久久久久小说| 人成福利视频在线观看| 视频一区三区| 日本一区二区动态图| 亚洲欧美国产精品久久久久久久| 日本久久精品一区二区| 国产亚洲欧美日韩高清| 亚洲大胆人体av| 国产综合一区二区| 少妇的滋味中文字幕bd| 亚洲国内精品在线| 成人欧美视频在线| 日本中文字幕在线观看视频| 黄色网址在线免费看| 精品国产乱码久久久久久影片| 久久人人爽人人爽人人片av不| 日韩成年人视频| 激情欧美一区二区三区黑长吊| 国产精品视频永久免费播放| 日韩精品欧美精品| 一本到三区不卡视频| yellow91字幕网在线| 日韩黄色一级视频| 人禽交欧美网站| 最近高清中文在线字幕在线观看1| 成人免费无遮挡无码黄漫视频| 国产91视觉| 在线观看国产视频一二三| 99视频资源网| 久久久噜噜噜久久久| 亚洲高清在线看| 精品人妻伦九区久久aaa片| 99久久国产热无码精品免费| 亚洲综合伊人久久大杳蕉| 日皮视频在线观看| 欧美9999| 欧美另类视频在线| 黄网站免费在线观看| 色dvdxxx| 波多野结衣不卡视频| 91丨九色丨国产| 亚洲欧美久久234| 亚洲精品网站在线观看| 久久中文字幕在线| 国产美女在线免费观看| 色综合天天综合色综合av| 国产91丝袜在线观看| 99国产精品久久久久久久| 午夜精品久久久久久不卡8050| 韩日在线视频| 天天射夜夜骑| 亚洲国产精品电影在线观看| 懂色aⅴ精品一区二区三区蜜月| 99亚洲视频| 动漫精品视频| 精品在线一区二区三区| 国产福利精品导航| 首播影院在线观看免费观看电视| 久久久久亚洲av无码专区| 欧美黑人性受xxxx喷水| 中文字幕在线网| 精品免费在线| 亚洲播播91| 欧美日韩亚洲在线| 国产精品成人一区二区三区夜夜夜| 91好吊色国产欧美日韩在线| 久草成人在线视频| 综合久久给合久久狠狠狠97色| 日韩在线激情视频| 欧美做受高潮中文字幕| 97免费高清电视剧观看| 97人人模人人爽人人喊38tv| 一本色道无码道dvd在线观看| 亚洲精品aaaa精品| 亚洲一二三区视频| 蜜桃视频在线观看91| 成人免费在线视频播放| 国产+成+人+亚洲欧洲自线| 中文字幕一区综合| 精品一区二区三区在线| 91免费观看视频| 97青娱国产盛宴精品视频| 激情久久一区| 国产视频97| 亚洲男人天堂av在线| 久久在线91| 亚洲免费电影在线观看| 亚洲欧洲日本专区| 亚洲乱色熟女一区二区三区| 国精产品久拍自产在线网站| 成年人国产在线观看| 国产资源在线观看| 国产激情视频在线观看| 国产精品久久久久av福利动漫| 免费精品视频一区| 久久久青草青青国产亚洲免观| 亚洲成人黄色av| 国产精品第一页第二页第三页| 在线能看的黄色| 欧美亚洲高清一区二区三区不卡| 欧美福利专区| 激情五月色综合亚洲小说| 久久国产精品久久精品| 五月激情丁香婷婷| 国产在线播放你懂的| 九九九视频在线观看| 精品久久久久久一区| 亚洲一区二区三区sesese| 久久久精品免费视频| 91av在线免费视频| 午夜丝袜av电影| 美女羞羞视频在线观看| 你懂的视频在线免费| 国产成人97精品免费看片| 亚洲乱码精品| 成人网18免费网站在线| 在线观看视频一区二区三区| 欧美久草视频| 老牛影视一区二区三区| 久久久久久久久国产| xfplay先锋影音夜色资源站| 国产精品酒店视频| 麻豆精品在线观看| 九九九精品视频| 激情另类小说区图片区视频区| 欧美日本韩国一区二区三区| 国产福利视频在线观看| 亚洲特色特黄| 欧美在线视频一二三| 色8久久影院午夜场| 亚洲校园激情春色| 久久九九国产精品| 狠狠色狠狠色合久久伊人| 免费a级毛片在线观看| 中文有码一区| 免费看毛片的网站| 久久视频在线播放| 无码国产精品一区二区高潮| 欧美裸身视频免费观看| 日韩av网站免费在线| 黄色一级大片在线免费观看| 校园春色 亚洲色图| 黄色软件视频在线观看| 国产精品看片你懂得| 国产青青草在线| 69av亚洲| 精品网站999www| 欧美成人一区二区三区高清| 色视频欧美一区二区三区| 91国内外精品自在线播放| 国产成人av一区二区三区在线观看| 91亚洲午夜精品久久久久久| 国产精品亚洲а∨天堂免在线| 高清视频在线www色| 99re在线视频免费观看| 亚洲免费成人在线| 欧美精品入口| 欧美美女在线| 欧美日韩美女一区二区| 天堂在线视频中文网| 先锋av资源在线| 91精品久久久久久久久久| 国产精品一品二区三区的使用体验| 88久久精品无码一区二区毛片| 亚洲五码在线| 欧美一区二区网站| 成人免费高清完整版在线观看| 秋霞av在线| 国产精品69久久久久孕妇欧美| 欧美色图另类| 在线小视频你懂的| 成人美女在线视频| 一区二区三区欧美| 一区二区三视频| 女生裸体免费视频| 一区二区三区四区在线视频| 日日狠狠久久| 欧美熟女一区二区| 国产在亚洲线视频观看| 国产午夜一区二区| 国产精品亚洲lv粉色| 欧美日韩国产成人在线免费| 精品无人区无码乱码毛片国产| 香蕉久久久久久久av网站| 亚洲人成人一区二区三区| 欧美日韩一二三四五区| 亚洲少妇中文在线| 91麻豆精品国产91久久久使用方法| 色免费在线视频| 国产精品一区免费视频| 香蕉视频免费在线| 久久sese| 伊人天天久久大香线蕉av色| 制服丝袜第二页| 亚洲毛片视频| 欧美绝品在线观看成人午夜影视| 亚洲福利影片在线| 韩国一区二区电影| 国产精品人妻一区二区三区| 国产在线视频99| 每日更新成人在线视频| 欧美日韩不卡一区二区| 亚洲精品久久久久久久久久久久久久| 91精品久久久久久久91蜜桃| 欧美日韩中出| 91久久高清国语自产拍| 精品国免费一区二区三区| 99久久99久久精品国产片果冰| av不卡一区二区三区| 日韩欧美另类在线| 国产无遮挡又黄又爽免费网站| 亚洲v日本v欧美v久久精品| 欧美日韩xx| 免费视频网站www| 97福利一区二区| 熟女人妻一区二区三区免费看| 伊人网综合在线| 亚洲人a成www在线影院| 热久久这里只有精品| 人操人视频在线观看| 97人人模人人爽视频一区二区|