亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來(lái)到蟲(chóng)蟲(chóng)下載站! | ?? 資源下載 ?? 資源專(zhuān)輯 ?? 關(guān)于我們
? 蟲(chóng)蟲(chóng)下載站

?? linux下的客戶(hù)機(jī)服務(wù)器編程.txt

?? linux下的客戶(hù)機(jī)服務(wù)器編程
?? TXT
字號(hào):
Linux以其源代碼公開(kāi)聞名于世,并以其穩(wěn)定性和可靠性雄霸操作系統(tǒng)領(lǐng)域,在網(wǎng)絡(luò)應(yīng)用技術(shù)方面使用得更加廣泛。很久以來(lái)它就是Windows的重要對(duì)手之一。隨著網(wǎng)絡(luò)時(shí)代的來(lái)臨,Linux的這種優(yōu)勢(shì)已變得更加突出。本文將論述如何在Linux環(huán)境下利用Socket實(shí)現(xiàn)客戶(hù)機(jī)/服務(wù)器通信。 
隨著網(wǎng)絡(luò)技術(shù)的發(fā)展,網(wǎng)絡(luò)結(jié)構(gòu)已從過(guò)去的主機(jī)/終端型、對(duì)等型發(fā)展到現(xiàn)在廣為使用的客戶(hù)機(jī)/服務(wù)器型。客戶(hù)機(jī)/服務(wù)器模型應(yīng)用十分廣泛,在Internet上WWW,E-mail,F(xiàn)TP等都是基于這種模型的。在面向連接的通信模式下,服務(wù)器打開(kāi)監(jiān)聽(tīng)端口,監(jiān)聽(tīng)網(wǎng)絡(luò)上其它客戶(hù)機(jī)向該服務(wù)器發(fā)出的連接請(qǐng)求,當(dāng)收到一個(gè)請(qǐng)求信號(hào)時(shí)與該客戶(hù)機(jī)建立一個(gè)連接,之后兩者進(jìn)行交互式的通信。具體步驟可這樣組織: 

服務(wù)器: 
1.打開(kāi)一個(gè)已知的監(jiān)聽(tīng)端口,如smtp為25、pop3為110、ftp為21、telnet為23等。 
2.在監(jiān)聽(tīng)端口上監(jiān)聽(tīng)客戶(hù)機(jī)的連接請(qǐng)求,如果有客戶(hù)機(jī)請(qǐng)求連接則建立一個(gè)連接線(xiàn)路。 
3.在連接線(xiàn)路上與客戶(hù)機(jī)通信。 
4.通信完畢后關(guān)閉連接線(xiàn)路并繼續(xù)監(jiān)聽(tīng)客戶(hù)機(jī)的連接請(qǐng)求。 

客戶(hù)機(jī): 
1.向指定的服務(wù)器主機(jī)及端口發(fā)出連接請(qǐng)求。 
2.當(dāng)服務(wù)器建立連接線(xiàn)路后與服務(wù)器進(jìn)行通信。 
3.通信完畢后關(guān)閉連接線(xiàn)路。 

Linux的許多特性都非常有助于網(wǎng)絡(luò)程序設(shè)計(jì):首先Linux擁有POSIX.1標(biāo)準(zhǔn)庫(kù)函數(shù),socket()、bind()、listen()這幾個(gè)庫(kù)函數(shù)可以非常方便地實(shí)現(xiàn)服務(wù)器/客戶(hù)機(jī)模型,有關(guān)這幾個(gè)庫(kù)函數(shù)的使用說(shuō)明將在后邊介紹。其次Linux的進(jìn)程管理也非常符合服務(wù)器的工作原理,所謂進(jìn)程就是程序在內(nèi)存中運(yùn)行時(shí)的狀態(tài),可以說(shuō)進(jìn)程是動(dòng)態(tài)的程序。在運(yùn)行著Linux操作系統(tǒng)的計(jì)算機(jī)中,每一個(gè)進(jìn)程都有一個(gè)創(chuàng)建它的父進(jìn)程,而且它也能創(chuàng)建多個(gè)子進(jìn)程。在服務(wù)器端我們可以用父進(jìn)程去監(jiān)聽(tīng)客戶(hù)機(jī)的連接請(qǐng)求,當(dāng)有客戶(hù)機(jī)的連接請(qǐng)求時(shí)父進(jìn)程創(chuàng)建一個(gè)子進(jìn)程去建立連接線(xiàn)路并與客戶(hù)機(jī)通信,而它本身可繼續(xù)監(jiān)聽(tīng)其它客戶(hù)機(jī)的連接請(qǐng)求,這樣就可避免當(dāng)有一個(gè)客戶(hù)機(jī)與服務(wù)器建立連接后服務(wù)器就不能再與其它客戶(hù)機(jī)通信的問(wèn)題。Linux的另一個(gè)特性是它秉承了UNIX設(shè)備無(wú)關(guān)性這一優(yōu)秀特征,即它通過(guò)文件描述符實(shí)現(xiàn)了統(tǒng)一的設(shè)備接口,磁盤(pán)、顯示終端、音頻設(shè)備、打印設(shè)備甚至網(wǎng)絡(luò)通信都使用統(tǒng)一的I/O調(diào)用。這三個(gè)特性將使Linux下的網(wǎng)絡(luò)程序設(shè)計(jì)變得易如反掌。 
上述三個(gè)特性的綜合利用將是這篇文章所要講述的真諦所在。下邊的客戶(hù)機(jī)/服務(wù)器實(shí)現(xiàn)過(guò)程可以說(shuō)明一二,注意與上文所述步驟的不同。 

服務(wù)器: 
1.打開(kāi)一個(gè)已知的監(jiān)聽(tīng)端口。 
2.在監(jiān)聽(tīng)端口上監(jiān)聽(tīng)客戶(hù)機(jī)的連接請(qǐng)求,當(dāng)有一客戶(hù)機(jī)請(qǐng)求連接時(shí)建立連接線(xiàn)路并返回通信文件描述符。 
4.父進(jìn)程創(chuàng)建一子進(jìn)程,父進(jìn)程關(guān)閉通信文件描述符并繼續(xù)監(jiān)聽(tīng)端口上的客戶(hù)機(jī)連接請(qǐng)求。 
3.子進(jìn)程通過(guò)通信文件描述符與客戶(hù)機(jī)進(jìn)行通信,通信結(jié)束后終止子進(jìn)程并關(guān)閉通信文件描述符。 

客戶(hù)機(jī): 
1.向指定的服務(wù)器主機(jī)及端口發(fā)出連接請(qǐng)求,請(qǐng)求成功將返回通信文件描述符。 
2.通過(guò)通信文件描述符與服務(wù)器進(jìn)行通信。 
3.通信完畢后關(guān)閉通信文件描述符。 


Linux的以下幾個(gè)庫(kù)函數(shù)是網(wǎng)絡(luò)程序設(shè)計(jì)的核心部分,它們分別是: 
(1)socket 
調(diào)用方式: 
#include 
#include 

int socket(int domain,int type,int protocol); 

簡(jiǎn)要說(shuō)明: 
此函數(shù)為通信創(chuàng)建一個(gè)端口,正常調(diào)用將返回一個(gè)文件描述符,錯(cuò)誤調(diào)用將返回-1。 
domain參數(shù)有兩種選擇:AF_UNIX與AF_INET,其中AF_INET為Internet通信協(xié)議。 
type參數(shù)也有兩種選擇:SOCK_STREAM用于TCP,SOCK_DGRAM用于UDP。 
protocol參數(shù)通常為0。 
可通過(guò)下列代碼為基于TCP協(xié)議的Internet通信建立套接口傳輸端口: 

#include 
#include 
#include 
int sock; 

if((sock=socket(AF_INET,SOCK_STREAM,0))==-1) 
perror("Could not create socket"); 

(2)bind 
調(diào)用方式: 
#include 
#include 

int bind(int s,const struct sockaddr *address,size_t address_len); 

簡(jiǎn)要說(shuō)明: 
bind英文含意是關(guān)聯(lián),捆綁。其目的就是把socket返回的套接口端口與網(wǎng)絡(luò)上的物理位置相關(guān)聯(lián)。 
bind正常調(diào)用返回0,出錯(cuò)返回-1。此函數(shù)有三個(gè)參數(shù):其中s為socket調(diào)用返回的文件描述符,*address設(shè)置了與網(wǎng)絡(luò)上的物理位置相關(guān)的信息,它的類(lèi)型是struct sockaddr,但在Internet上它是struct sockaddr_in。在socket.h中struct sockaddr_in定義為: 
struct sockaddr_in{ 
short sin_family; 
u_short sin_port; 
struct in_addr sin_addr; 
char sin_zero[8]; 
}; 
sin_family一般為AF_INET,sin_port為端口號(hào),由于使用不同字節(jié)順序的機(jī)器必須作轉(zhuǎn)換,故應(yīng)使用宏命令htons(host to network short)來(lái)轉(zhuǎn)換端口號(hào),sin_addr將置為INADDR_ANY。這三個(gè)值設(shè)置完成后*address參數(shù)才有意義。在編寫(xiě)代碼時(shí),應(yīng)先設(shè)置*address參數(shù)內(nèi)部各成員變量的值,再調(diào)用bind。 

(3)listen 
調(diào)用方式: 
#include 
#include 

int listen(int s,int backlog); 

簡(jiǎn)要說(shuō)明: 
本函數(shù)使socket端口能夠接受從客戶(hù)機(jī)來(lái)的連接請(qǐng)求,正常調(diào)用返回0,出錯(cuò)返回-1。 
s參數(shù)為socket產(chǎn)生的文件描述符,backlog為所能接受客戶(hù)機(jī)的最大數(shù)目。 
socket,bind,listen 三個(gè)函數(shù)的綜合調(diào)用最終在服務(wù)器上產(chǎn)生一個(gè)能接受客戶(hù)機(jī)請(qǐng)求的監(jiān)聽(tīng)文件描述符s。 

(4)accept 
調(diào)用方式: 
#include 
#include 

int accept(int s,struct sockaddr *address,int *address_len); 

簡(jiǎn)要說(shuō)明: 
當(dāng)有客戶(hù)機(jī)發(fā)出連接請(qǐng)求時(shí),此函數(shù)初始化這個(gè)連接。正常調(diào)用返回與客戶(hù)機(jī)通信的通信文件描述符,出錯(cuò)返回-1。 
參數(shù)s為socket調(diào)用返回的文件描述符, 
address將用來(lái)存儲(chǔ)客戶(hù)機(jī)的信息,此信息由accept填入,當(dāng)與客戶(hù)機(jī)連接時(shí),客戶(hù)機(jī)的地址與端口將填到此處。 
address_len是客戶(hù)機(jī)地址長(zhǎng)度的字節(jié)數(shù),也由accept填入。 

(5)connect 
調(diào)用方式: 
#include 
#include 

int connect(int s,struct sockaddr *address,size_t address_len); 

簡(jiǎn)要說(shuō)明: 
客戶(hù)機(jī)調(diào)用socket建立傳輸端口后,調(diào)用connect來(lái)建立與遠(yuǎn)程服務(wù)器相連的連接線(xiàn)路。 
此函數(shù)的參數(shù)調(diào)用同bind。 

(6)inet_addr 
調(diào)用方式: 
#include 
#include 
#include 

in_addr_t inet_addr(const char *addstring); 

簡(jiǎn)要說(shuō)明: 
此函數(shù)將字符串a(chǎn)ddstring表示的網(wǎng)絡(luò)地址(如192.168.0.1)轉(zhuǎn)換成32位的網(wǎng)絡(luò)字節(jié)序二進(jìn)制值,若成功返回32位二進(jìn)制的網(wǎng)絡(luò)字節(jié)序地址,若出錯(cuò)返回 INADDR_NONE。INADDR_NONE是32位均為1的值(即255.255.255.255,它是Internet的有限廣播地址),故如果要轉(zhuǎn)換的addstring是255.255.255.255,函數(shù)調(diào)用將失敗。 

(7)fork 
調(diào)用方式: 
#include 
#include 


pid_t fork(void); 

簡(jiǎn)要說(shuō)明: 
fork的作用是拷貝父進(jìn)程的內(nèi)存映象來(lái)創(chuàng)建子進(jìn)程,兩個(gè)進(jìn)程將接著fork后的指令繼續(xù)執(zhí)行。 事實(shí)上它返回兩個(gè)進(jìn)程控制號(hào),對(duì)于父進(jìn)程它返回子進(jìn)程的進(jìn)程ID,對(duì)于子進(jìn)程它返回0。 

可用下邊的代碼調(diào)用fork: 

pid_t childpid; 
if((childpid=fork())=-1){ 
perror("The fork failed"); 
exit(1); 
} 
else if(child==0){ 
調(diào)用子進(jìn)程; 
} 
else if(child>0){ 
調(diào)用父進(jìn)程; 
} 


以上介紹了網(wǎng)絡(luò)編程的有關(guān)庫(kù)函數(shù)的調(diào)用方法,下面舉一個(gè)客戶(hù)機(jī)/服務(wù)器程序的小例子具體說(shuō)明如何設(shè)計(jì)網(wǎng)絡(luò)程序。本例介紹如何查看服務(wù)器上的時(shí)間和日期,由于daytime服務(wù)器的通用端口為13,客戶(hù)機(jī)程序?qū)⑼ㄟ^(guò)調(diào)用13號(hào)端口對(duì)服務(wù)器上的時(shí)間和日期進(jìn)行操作。 


/*timeserve.c*/ 
/*服務(wù)器程序偽代碼如下: 

打開(kāi)daytime監(jiān)聽(tīng)端口; 
while(客戶(hù)機(jī)與服務(wù)器成功連接——成功返回通信文件描述符) 
{ 
fork() 
子進(jìn)程: 
{ 
讀出當(dāng)前時(shí)間; 
將當(dāng)前時(shí)間寫(xiě)入通信文件描述符; 
關(guān)閉通信文件描述符; 
} 
父進(jìn)程: 
關(guān)閉通信文件描述符; 
} 
*/ 

#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 

int main(int argc,char *argv[]) 
{ 
int listenfd,communfd; 
struct sockaddr_in servaddr; 
pid_t childpid; 
time_t tick; 
char buf[1024]; 

if((listenfd=socket(AF_INET,SOCK_STREAM,0))==-1) 
{ 
perror("Could not create socket"); 
exit(1); 
} 

servaddr.sin_family=AF_INET; 
servaddr.sin_addr.s_addr=INADDR_ANY; 
servaddr.sin_port=htons(13); 
if(bind(listenfd,(struct sockaddr *)&servaddr,sizeof(servaddr))==-1) 
{ 
perror("bind error"); 
exit(1); 
} 
if(listen(listenfd,254)==-1) 
{ 
perror("listen error"); 
exit(1); 
} 
while(communfd=accept(listenfd,(struct sockaddr*)NULL,NULL)) 
{ 
if((childpid=fork())==-1) 
{ 
perror("fork error"); 
exit(1); 
} 
else if(childpid==0) 
{ 
tick=time(NULL); 
snprintf(buf,sizeof(buf),"%.24s\r\n",ctime(&tick)); 
write(communfd,buf,strlen(buf)); 
close(communfd); 
} 
else if(childpid>0) 
close(communfd); 

} 
exit(0); 
} 


/*timeclient.h*/ 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 

int main(int argc,char *argv[]) 
{ 
int communfd,n; 
struct sockaddr_in servaddr; 
char recieve[1024],buf[1024]; 

if(argc!=2) 
{ 
perror("Usage: client "); 
exit(1); 
} 
if((communfd=socket(AF_INET,SOCK_STREAM,0))==-1) 
{ 
perror("socket error"); 
exit(1); 
} 
servaddr.sin_family=AF_INET; 
servaddr.sin_port=htons(13); 
if((servaddr.sin_addr.s_addr=inet_addr(argv[1]))==INADDR_NONE) 
{ 
perror("inet_addr error"); 
exit(1); 
} 
if(connect(communfd,(struct sockaddr*)&servaddr,sizeof(servaddr))==-1) 
{ 
perror("connect error"); 
exit(1); 
} 
while((n=read(communfd,recieve,1024))>0) 
{ 
recieve[n]=0; 
if(fputs(recieve,stdout)==EOF) 
perror("fputs error"); 
} 
close(communfd); 
exit(0); 
} 

用gcc編譯兩個(gè)源程序分別取名為server和client,以根用戶(hù)身份運(yùn)行服務(wù)器程序(設(shè)服務(wù)器網(wǎng)絡(luò)地址為192.168.0.1): 
server & 
然后運(yùn)行客戶(hù)機(jī)程序(設(shè)服務(wù)器網(wǎng)絡(luò)地址為192.168.0.1): 
client 192.168.0.1 
在客戶(hù)機(jī)上就會(huì)反映出服務(wù)器上當(dāng)前的時(shí)間如(Tue Feb 29 21:46:19 2000)。 

以上程序代碼在redhat 6.0上試驗(yàn)通過(guò)。在程序代碼中有關(guān)庫(kù)函數(shù)snprintf、fputs、read、write、close的用法就不在這里說(shuō)明了,如想了解這些庫(kù)函數(shù)的調(diào)用方法可到我的網(wǎng)頁(yè)http://lzdx.yeah. net/pro_unix.html去查找。在我的網(wǎng)頁(yè)http://lzdx.yeah.net/pro_uici.html中有關(guān)于通用Internet接口(UICI)專(zhuān)用庫(kù)的介紹,通用Internet接口(UICI)利用Socket庫(kù)函數(shù)提供了一個(gè)簡(jiǎn)化的獨(dú)立于傳輸?shù)慕涌冢鼜恼w上簡(jiǎn)化了網(wǎng)絡(luò)程序設(shè)計(jì)過(guò)程。有興趣的人可到那里去看看。 
最后祝愿我們每個(gè)人都能編寫(xiě)出自己的網(wǎng)絡(luò)程序。 

xin_cygnet 
xin_cygnet@263.net 
http://xin_cygnet.toopcool.net 

出自:http://www.neweasier.com/article/2002-08-07/1028712268.html
 

?? 快捷鍵說(shuō)明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲蜜臀av乱码久久精品蜜桃| 国产一区二区三区不卡在线观看 | zzijzzij亚洲日本少妇熟睡| 精品影院一区二区久久久| 天堂一区二区在线免费观看| 亚洲va国产天堂va久久en| 亚洲国产精品一区二区尤物区| 亚洲乱码国产乱码精品精可以看 | 国产精品三级久久久久三级| 337p粉嫩大胆色噜噜噜噜亚洲| 日韩欧美一区二区在线视频| 欧美v亚洲v综合ⅴ国产v| 欧美videofree性高清杂交| 2023国产精品视频| 国产午夜精品久久久久久免费视| 久久精品免视看| 国产精品欧美一级免费| 成人欧美一区二区三区小说| 一区二区三区日本| 日本成人在线网站| 久久精品二区亚洲w码| 国产伦精品一区二区三区视频青涩 | 久久久久久久久99精品| 欧美国产综合色视频| 亚洲三级理论片| 亚洲国产日韩在线一区模特| 日韩av中文字幕一区二区三区 | 在线播放视频一区| 精品久久国产字幕高潮| 中文av一区二区| 玉米视频成人免费看| 日韩精品电影一区亚洲| 国产中文字幕精品| 91美女片黄在线观看| 欧美日韩国产影片| 久久久久久一级片| 亚洲美女淫视频| 青青草97国产精品免费观看| 国产成人aaa| 欧美性高清videossexo| 欧美大度的电影原声| 国产精品国产三级国产普通话蜜臀 | 色综合中文字幕| 91精品婷婷国产综合久久性色| 精品久久久久一区| 亚洲欧美日韩在线不卡| 日本成人中文字幕在线视频| 丁香六月综合激情| 欧美日韩精品免费| 中文一区二区在线观看| 性久久久久久久| 国产精品夜夜嗨| 欧美日韩国产高清一区二区三区 | 91麻豆免费看| 日韩一区二区三区三四区视频在线观看 | 久久99蜜桃精品| 91影院在线观看| 欧美tk—视频vk| 亚洲与欧洲av电影| 成人精品视频一区二区三区| 91精品欧美久久久久久动漫| 国产精品久久久久影院色老大| 免费久久99精品国产| 91久久香蕉国产日韩欧美9色| 精品三级在线观看| 亚洲成人资源在线| 91香蕉视频污| 国产欧美一区二区精品性| 秋霞av亚洲一区二区三| 色婷婷av一区二区三区之一色屋| 久久伊99综合婷婷久久伊| 性欧美疯狂xxxxbbbb| 91亚洲永久精品| 久久综合成人精品亚洲另类欧美 | 欧美mv日韩mv国产网站app| 亚洲一区二区黄色| 91原创在线视频| 欧美激情中文字幕| 国产综合久久久久影院| 欧美精品xxxxbbbb| 亚洲夂夂婷婷色拍ww47| 99久久精品久久久久久清纯| 久久久午夜精品| 极品瑜伽女神91| 欧美一级久久久久久久大片| 亚洲国产一区二区三区| 色呦呦国产精品| 成人免费在线视频| va亚洲va日韩不卡在线观看| 久久久精品综合| 国内精品自线一区二区三区视频| 欧美高清视频不卡网| 亚洲电影中文字幕在线观看| 欧美性生活久久| 一区二区三区在线观看视频 | 日韩一区二区精品葵司在线| 午夜成人在线视频| 在线不卡免费欧美| 三级一区在线视频先锋| 欧美高清视频一二三区| 亚洲一区视频在线观看视频| 色综合久久久久综合99| 亚洲欧美日韩国产成人精品影院| bt7086福利一区国产| 精品对白一区国产伦| 精品一区二区三区的国产在线播放| 日韩一区二区三区四区五区六区| 日本不卡的三区四区五区| 91精品婷婷国产综合久久竹菊| 五月激情综合婷婷| 91麻豆精品国产91久久久使用方法 | 精品免费日韩av| 精品在线免费视频| 国产婷婷色一区二区三区在线| 国产精品一二三区在线| 国产精品久久久久婷婷二区次| 成人avav影音| 一区二区在线看| 欧美日韩国产一级片| 青椒成人免费视频| 久久综合av免费| a亚洲天堂av| 亚洲图片一区二区| 日韩精品在线网站| 国产suv精品一区二区6| 1000部国产精品成人观看| 欧美性色综合网| 久久国产精品露脸对白| 国产精品日产欧美久久久久| av网站免费线看精品| 亚洲一区在线视频| 日韩欧美在线一区二区三区| 国产电影一区二区三区| 亚洲免费大片在线观看| 欧美精品vⅰdeose4hd| 韩日av一区二区| 亚洲欧美日韩综合aⅴ视频| 91精品蜜臀在线一区尤物| 精品一区二区三区av| 中文字幕欧美一区| 欧美精品一卡两卡| 风间由美一区二区av101 | 国产精品一区二区x88av| 亚洲三级在线免费| 日韩女优视频免费观看| 成人av中文字幕| 日韩高清在线不卡| 中文一区二区完整视频在线观看| 欧美系列在线观看| 国产精品资源网站| 亚洲国产美国国产综合一区二区| 精品国产乱码久久久久久影片| 99久久国产免费看| 久久国产乱子精品免费女| 亚洲欧美成人一区二区三区| 日韩免费在线观看| 日本韩国精品在线| 国产成人亚洲精品狼色在线| 亚洲一二三区不卡| 欧美国产乱子伦| 欧美一区二区三区四区视频 | 久久久久久久一区| 欧美三片在线视频观看| 大美女一区二区三区| 日本成人在线看| 亚洲精品久久嫩草网站秘色| 精品久久人人做人人爱| 欧美午夜精品一区二区三区| 国产精品一二一区| 美女任你摸久久| 亚洲国产综合在线| 国产精品不卡一区| 久久久国产精品麻豆| 91精品在线观看入口| 在线中文字幕一区二区| 成人教育av在线| 国产麻豆精品在线| 另类人妖一区二区av| 亚洲午夜激情av| 亚洲欧洲综合另类| 中文字幕第一区第二区| 欧美成人在线直播| 91精品欧美福利在线观看| 在线亚洲人成电影网站色www| 高清视频一区二区| 国产一区二区三区不卡在线观看| 日韩中文字幕91| 亚洲bt欧美bt精品| 亚洲网友自拍偷拍| 伊人一区二区三区| 亚洲免费av高清| 亚洲人成伊人成综合网小说| 欧美国产一区在线| 国产日韩高清在线| 国产午夜亚洲精品不卡| 久久午夜免费电影| 久久久美女艺术照精彩视频福利播放| 欧美一区二区三区视频免费播放| 精品视频在线免费看| 欧美揉bbbbb揉bbbbb|