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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 人文社科 > 生活经验 >内容正文

生活经验

socket编程和并发服务器

發布時間:2023/11/27 生活经验 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 socket编程和并发服务器 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

?

?

socket這個詞可以表示很多概念:

在TCP/IP協議中,“IP地址+TCP或UDP端口號”唯一標識網絡通訊中的一個進程“IP地址+端口號”就稱為socket。

在TCP協議中,建立連接的兩個進程各自有一個socket來標識,那么這兩個socket組成的socket pair就唯一標識一個連接

socket本身有“插座”的意思,因此用來描述網絡連接的一對一關系。

TCP/IP協議最早在BSD UNIX上實現,為TCP/IP協議設計的應用層編程接口稱為socket?API。

預備知識

網絡字節序

我們已經知道,內存中的多字節數據相對于內存地址有大端和小端之分,磁盤文件中的多字節數據相對于文件中的偏移地址也有大端小端之分。

網絡數據流同樣有大端小端之分,那么如何定義網絡數據流的地址呢?發送主機通常將發送緩沖區中的數據按內存地址從低到高的順序發出

接收主機把從網絡上接到的字節依次保存在接收緩沖區中,也是按內存地址從低到高的順序保存因此,網絡數據流的地址應這樣規定:先發出的數據是低地址,后發出的數據是高地址。

TCP/IP協議規定,網絡數據流應采用大端字節序,即低地址高字節。例如UDP段格式,地址0-1是16位的源端口號,如果這個端口號是1000(0x3e8),則地址0是0x03,

地址1是0xe8,也就是先發0x03,再發0xe8,這16位在發送主機的緩沖區中也應該是低地址存0x03,高地址存0xe8。但是,如果發送主機是小端字節序的,這16位被解釋成0xe803,而

不是1000。因此,發送主機把1000填到發送緩沖區之前需要做字節序的轉換。同樣地,接收主機如果是小端字節序的,接到16位的源端口號也要做字節序的轉換。如果主機是大端字節

序的,發送和接收都不需要做轉換。同理,32位的IP地址也要考慮網絡字節序和主機字節序的問題。

為使網絡程序具有可移植性,使同樣的C代碼在大端和小端計算機上編譯后都能正常運行,可以調用以下庫函數做網絡字節序和主機字節序的轉換。

#include <arpa/inet.h>
uint32_t htonl(uint32_t hostlong);
uint16_t htons(uint16_t hostshort);
uint32_t ntohl(uint32_t netlong);
uint16_t ntohs(uint16_t netshort);
h表示host,n表示network,l表示32位長整數,s表示16位短整數。
如果主機是小端字節序,這些函數將參數做相應的大小端轉換然后返回,如果主機是大端字節序,這些函數不做轉
換,將參數原封不動地返回。

?

IP地址轉換函數
早期
#include <sys/socket.h>
#include <netinet/in.h>
#include <arpa/inet.h>
int inet_aton(const char *cp, struct in_addr *inp);
in_addr_t inet_addr(const char *cp);
char *inet_ntoa(struct in_addr in);
只能處理IPv4的ip地址
不可重入函數
注意參數是struct in_addr
現在
#include <arpa/inet.h>
int inet_pton(int af, const char *src, void *dst);
const char *inet_ntop(int af, const void *src, char *dst, socklen_t size);
支持IPv4和IPv6

?

其中inet_pton和inet_ntop不僅可以轉換IPv4的in_addr,還可以轉換IPv6的in6_addr,因此函數接口是void *addrptr

?

sockaddr數據結構

strcut sockaddr 很多網絡編程函數誕生早于IPv4協議,那時候都使用的是sockaddr結構體,為了向前兼容,現在sockaddr退化成了(void *)的作用,傳遞一個地址給函數

至于這個函數是sockaddr_in還是sockaddr_in6,由地址族確定,然后函數內部再強制類型轉化為所需的地址類型

?

?

struct sockaddr {
sa_family_t sa_family; /* address family, AF_xxx */
char sa_data[14]; /* 14 bytes of protocol address */
};
struct sockaddr_in {
__kernel_sa_family_t sin_family; /* Address family */
__be16 sin_port; /* Port number */
struct in_addr sin_addr; /* Internet address */
/* Pad to size of `struct sockaddr'. */
unsigned char __pad[__SOCK_SIZE__ - sizeof(short int) -
sizeof(unsigned short int) - sizeof(struct in_addr)];
};
/* Internet address. */
struct in_addr {
__be32 s_addr;
}struct sockaddr_in6 {
unsigned short int sin6_family; /* AF_INET6 */
__be16 sin6_port; /* Transport layer port # */
__be32 sin6_flowinfo; /* IPv6 flow information */
struct in6_addr sin6_addr; /* IPv6 address */
__u32 sin6_scope_id; /* scope id (new in RFC2553) */
};
struct in6_addr {
union {
__u8 u6_addr8[16];
__be16 u6_addr16[8];
__be32 u6_addr32[4];
} in6_u;
#define s6_addr in6_u.u6_addr8
#define s6_addr16 in6_u.u6_addr16
#define s6_addr32 in6_u.u6_addr32
};
#define UNIX_PATH_MAX 108
struct sockaddr_un {
__kernel_sa_family_t sun_family; /* AF_UNIX */
char sun_path[UNIX_PATH_MAX]; /* pathname */
};

?

Pv4和IPv6的地址格式定義在netinet/in.h中,IPv4地址用sockaddr_in結構體表示,包括16位端口號和32位IP地址, IPv6地址用sockaddr_in6結構體表示,包括16位端口號、128位IP地址和一些控制字段。UNIX Domain Socket的地址格式定義在sys/un.h中,用sockaddr_un結構體表示。各種socket地址結構體的開頭都是相同的,前16位表示整個結構體的長度(并不是所有UNIX的實現都有長度字段,如Linux就沒有),后16位表示地址類型。 IPv4、IPv6和Unix Domain Socket的地址類型分別定義為常數AF_INET、AF_INET6、AF_UNIX。 這樣,只要取得某種sockaddr結構體的首地址,不需要知道具體是哪種類型的sockaddr結構體,就可以根據地址類型字段確定結構體中的內容。 因此,socket API可以接受各種類型的sockaddr結構體指針做參數,例如bind、accept、connect等函數, 這些函數的參數應該設計成void *類型以便接受各種類型的指針,但是sock API的實現早于ANSI C標準化,那時還沒有void *類型,因此這些函數的參數都用 struct sockaddr *類型表示,在傳遞參數之前強制類型轉換一下,例如:

?

struct sockaddr_in servaddr;
/* initialize servaddr */
bind(listen_fd, (struct sockaddr *)&servaddr, sizeof(servaddr));

?

網絡套接字函數

?

?

socket

#include <sys/types.h> /* See NOTES */
#include <sys/socket.h>
int socket(int domain, int type, int protocol);
domain:
AF_INET 這是大多數用來產生socket的協議,使用TCP或UDP來傳輸,用IPv4的地址
AF_INET6 與上面類似,不過是來用IPv6的地址
AF_UNIX 本地協議,使用在Unix和Linux系統上,一般都是當客戶端和服務器在同一臺及其上的時候使用
type:
SOCK_STREAM 這個協議是按照順序的、可靠的、數據完整的基于字節流的連接。這是一個使用最多的socket類
型,這個socket是使用TCP來進行傳輸。
SOCK_DGRAM 這個協議是無連接的、固定長度的傳輸調用。該協議是不可靠的,使用UDP來進行它的連接。
SOCK_SEQPACKET 這個協議是雙線路的、可靠的連接,發送固定長度的數據包進行傳輸。必須把這個包完整的
接受才能進行讀取。
SOCK_RAW 這個socket類型提供單一的網絡訪問,這個socket類型使用ICMP公共協議。(ping、traceroute使
用該協議)
SOCK_RDM 這個類型是很少使用的,在大部分的操作系統上沒有實現,它是提供給數據鏈路層使用,不保證數
據包的順序
protocol:
0 默認協議
返回值:
成功返回一個新的文件描述符,失敗返回-1,設置errno

?socket()打開一個網絡通訊端口,如果成功的話,就像open()一樣返回一個文件描
述符,應用程序可以像讀寫文件一樣用read/write在網絡上收發數據,如果socket()調
用出錯則返回-1。對于IPv4,domain參數指定為AF_INET。對于TCP協議,type參數指定為
SOCK_STREAM,表示面向流的傳輸協議。如果是UDP協議,則type參數指定為SOCK_DGRAM,
表示面向數據報的傳輸協議。protocol參數的介紹從略,指定為0即可。

?

bind

#include <sys/types.h> /* See NOTES */
#include <sys/socket.h>
int bind(int sockfd, const struct sockaddr *addr, socklen_t addrlen);
sockfd:
socket文件描述符
addr:
構造出IP地址加端口號
addrlen:
sizeof(addr)長度
返回值:
成功返回0,失敗返回-1, 設置errno

服務器程序所監聽的網絡地址和端口號通常是固定不變的,客戶端程序得知服務器程序
的地址和端口號后就可以向服務器發起連接,因此服務器需要調用bind綁定一個固定的網絡
地址和端口號。
bind()的作用是將參數sockfd和addr綁定在一起,使sockfd這個用于網絡通訊的文件
描述符監聽addr所描述的地址和端口號。前面講過,struct sockaddr *是一個通用指針類
型,addr參數實際上可以接受多種協議的sockaddr結構體,而它們的長度各不相同,所以需
要第三個參數addrlen指定結構體的長度。如:

struct sockaddr_in servaddr;
bzero(&servaddr, sizeof(servaddr));
servaddr.sin_family = AF_INET;
servaddr.sin_addr.s_addr = htonl(INADDR_ANY);
servaddr.sin_port = htons(8000);

?

首先將整個結構體清零,然后設置地址類型為AF_INET,網絡地址為INADDR_ANY,這個
宏表示本地的任意IP地址,因為服務器可能有多個網卡,每個網卡也可能綁定多個IP地址,
這樣設置可以在所有的IP地址上監聽,直到與某個客戶端建立了連接時才確定下來到底用哪
個IP地址,端口號為8000。

?

listen

?

#include <sys/types.h> /* See NOTES */
#include <sys/socket.h>
int listen(int sockfd, int backlog);
sockfd:
socket文件描述符
backlog:
排隊建立3次握手隊列和剛剛建立3次握手隊列的鏈接數和

?

查看系統默認backlog

cat /proc/sys/net/ipv4/tcp_max_syn_backlog

典型的服務器程序可以同時服務于多個客戶端,當有客戶端發起連接時,服務器調用的
accept()返回并接受這個連接,如果有大量的客戶端發起連接而服務器來不及處理,尚未
accept的客戶端就處于連接等待狀態,listen()聲明sockfd處于監聽狀態,并且最多允許有
backlog個客戶端處于連接待狀態,如果接收到更多的連接請求就忽略。listen()成功返回
0,失敗返回-1。

?

#include <sys/types.h> /* See NOTES */
#include <sys/socket.h>
int accept(int sockfd, struct sockaddr *addr, socklen_t *addrlen);
sockdf:
socket文件描述符
addr:
傳出參數,返回鏈接客戶端地址信息,含IP地址和端口號
addrlen:
傳入傳出參數(值-結果),傳入sizeof(addr)大小,函數返回時返回真正接收到地址結
返回值:
成功返回一個新的socket文件描述符,用于和客戶端通信,失敗返回-1,設置errno

?

?三方握手完成后,服務器調用accept()接受連接,如果服務器調用accept()時還沒有
客戶端的連接請求,就阻塞等待直到有客戶端連接上來。addr是一個傳出參數,accept()
返回時傳出客戶端的地址和端口號。addrlen參數是一個傳入傳出參數(value-result
argument),傳入的是調用者提供的緩沖區addr的長度以避免緩沖區溢出問題,傳出的是客
戶端地址結構體的實際長度(有可能沒有占滿調用者提供的緩沖區)。如果給addr參數傳
NULL,表示不關心客戶端的地址。
我們的服務器程序結構是這樣的:

?

while (1) {
cliaddr_len = sizeof(cliaddr);
connfd = accept(listenfd, (struct sockaddr *)&cliaddr, &cliaddr_len);
n = read(connfd, buf, MAXLINE);
......
close(connfd);
}

整個是一個while死循環,每次循環處理一個客戶端連接。由于cliaddr_len是傳入傳出
參數,每次調用accept()之前應該重新賦初值。accept()的參數listenfd是先前的監聽文件

描述符,而accept()的返回值是另外一個文件描述符connfd,之后與客戶端之間就通過這個
connfd通訊,最后關閉connfd斷開連接,而不關閉listenfd,再次回到循環開頭listenfd仍
然用作accept的參數。accept()成功返回一個文件描述符,出錯返回-1

?

connect

#include <sys/types.h> /* See NOTES */
#include <sys/socket.h>
int connect(int sockfd, const struct sockaddr *addr, socklen_t addrlen);
sockdf:
socket文件描述符
addr:
傳入參數,指定服務器端地址信息,含IP地址和端口號
addrlen:
傳入參數,傳入sizeof(addr)大小
返回值:
成功返回0,失敗返回-1,設置errno

?

?server.c

#include <stdio.h>
#include <sys/types.h>
#include <sys/socket.h>
#include <strings.h>
#include <arpa/inet.h>
#include <unistd.h>
#include <ctype.h>#define SERV_PORT 8000int main(void)
{int sfd, cfd;int i, len;struct sockaddr_in serv_addr, client_addr;char buf[4096], client_ip[128];socklen_t addr_len;//AF_INET:ipv4   SOCK_STREAM:流協議   0:默認協議(tcp,udp)sfd = socket(AF_INET, SOCK_STREAM, 0);//綁定前先構造出服務器地址bzero(&serv_addr, sizeof(serv_addr));serv_addr.sin_family = AF_INET;//網絡字節序serv_addr.sin_port = htons(SERV_PORT);//INADDR_ANY主機所有ipserv_addr.sin_addr.s_addr = htonl(INADDR_ANY);bind(sfd, (struct sockaddr *)&serv_addr, sizeof(serv_addr));//服務器能接收并發鏈接的能力listen(sfd, 128);printf("wait for connect ...\n");addr_len = sizeof(client_addr);//阻塞,等待客戶端鏈接,成功則返回新的文件描述符,用于和客戶端通信cfd = accept(sfd, (struct sockaddr *)&client_addr, &addr_len);printf("client IP:%s\t%d\n", inet_ntop(AF_INET, &client_addr.sin_addr.s_addr, client_ip, sizeof(client_ip)),ntohs(client_addr.sin_port));while (1) {//阻塞接收客戶端數據len = read(cfd, buf, sizeof(buf));write(STDOUT_FILENO, buf, len);//處理業務for (i = 0; i < len; i++)buf[i] = toupper(buf[i]);//返回給客戶端結果
        write(cfd, buf, len);}close(cfd);close(sfd);return 0;
}

client

#include <stdio.h>
#include <unistd.h>
#include <sys/types.h>
#include <sys/socket.h>
#include <string.h>
#include <arpa/inet.h>#define SERV_PORT 8000int main(int argc, char *argv[])
{int sfd, len;struct sockaddr_in serv_addr;char buf[4096];if (argc < 2) {printf("./client serv_ip\n");return 1;}sfd = socket(AF_INET, SOCK_STREAM, 0);bzero(&serv_addr, sizeof(serv_addr));serv_addr.sin_family = AF_INET;serv_addr.sin_port = htons(SERV_PORT);inet_pton(AF_INET, argv[1], &serv_addr.sin_addr.s_addr);connect(sfd, (struct sockaddr *)&serv_addr, sizeof(serv_addr));while (fgets(buf, sizeof(buf), stdin)) {write(sfd, buf, strlen(buf));len = read(sfd, buf, sizeof(buf));write(STDOUT_FILENO, buf, len);}return 0;
}

?

?

多進程并發服務器

#include <stdlib.h>
#include <errno.h>
#include <sys/socket.h>void perr_exit(const char *s)
{perror(s);exit(1);
}int Accept(int fd, struct sockaddr *sa, socklen_t *salenptr)
{int n;again:if ( (n = accept(fd, sa, salenptr)) < 0) {if ((errno == ECONNABORTED) || (errno == EINTR))goto again;elseperr_exit("accept error");}return n;
}void Bind(int fd, const struct sockaddr *sa, socklen_t salen)
{if (bind(fd, sa, salen) < 0)perr_exit("bind error");
}void Connect(int fd, const struct sockaddr *sa, socklen_t salen)
{if (connect(fd, sa, salen) < 0)perr_exit("connect error");
}void Listen(int fd, int backlog)
{if (listen(fd, backlog) < 0)perr_exit("listen error");
}int Socket(int family, int type, int protocol)
{int n;if ( (n = socket(family, type, protocol)) < 0)perr_exit("socket error");return n;
}ssize_t Read(int fd, void *ptr, size_t nbytes)
{ssize_t n;again:if ( (n = read(fd, ptr, nbytes)) == -1) {if (errno == EINTR)goto again;elsereturn -1;}return n;
}ssize_t Write(int fd, const void *ptr, size_t nbytes)
{ssize_t n;again:if ( (n = write(fd, ptr, nbytes)) == -1) {if (errno == EINTR)goto again;elsereturn -1;}return n;
}void Close(int fd)
{if (close(fd) == -1)perr_exit("close error");
}
ssize_t Readn(int fd, void *vptr, size_t n)
{size_t  nleft;ssize_t nread;char   *ptr;ptr = vptr;nleft = n;while (nleft > 0) {if ( (nread = read(fd, ptr, nleft)) < 0) {if (errno == EINTR)nread = 0;elsereturn -1;} else if (nread == 0)break;nleft -= nread;ptr += nread;}return n - nleft;
}ssize_t Writen(int fd, const void *vptr, size_t n)
{size_t nleft;ssize_t nwritten;const char *ptr;ptr = vptr;nleft = n;while (nleft > 0) {if ( (nwritten = write(fd, ptr, nleft)) <= 0) {if (nwritten < 0 && errno == EINTR)nwritten = 0;elsereturn -1;}nleft -= nwritten;ptr += nwritten;}return n;
}
static ssize_t my_read(int fd, char *ptr)
{static int read_cnt;static char *read_ptr;static char read_buf[100];if (read_cnt <= 0) {
again:if ( (read_cnt = read(fd, read_buf, sizeof(read_buf))) < 0) {if (errno == EINTR)goto again;return -1;} else if (read_cnt == 0)return 0;read_ptr = read_buf;}read_cnt--;*ptr = *read_ptr++;return 1;
}ssize_t Readline(int fd, void *vptr, size_t maxlen)
{ssize_t n, rc;char    c, *ptr;ptr = vptr;for (n = 1; n < maxlen; n++) {if ( (rc = my_read(fd, &c)) == 1) {*ptr++ = c;if (c  == '\n')break;} else if (rc == 0) {*ptr = 0;return n - 1;} elsereturn -1;}*ptr  = 0;return n;
}
wrap.c
#ifndef __WRAP_H_
#define __WRAP_H_void perr_exit(const char *s);
int Accept(int fd, struct sockaddr *sa, socklen_t *salenptr);
void Bind(int fd, const struct sockaddr *sa, socklen_t salen);
void Connect(int fd, const struct sockaddr *sa, socklen_t salen);
void Listen(int fd, int backlog);
int Socket(int family, int type, int protocol);
ssize_t Read(int fd, void *ptr, size_t nbytes);
ssize_t Write(int fd, const void *ptr, size_t nbytes);
void Close(int fd);
ssize_t Readn(int fd, void *vptr, size_t n);
ssize_t Writen(int fd, const void *vptr, size_t n);
static ssize_t my_read(int fd, char *ptr);
ssize_t Readline(int fd, void *vptr, size_t maxlen);#endif
wrap.h
#include <stdio.h>
#include <unistd.h>
#include <sys/types.h>
#include <sys/socket.h>
#include <arpa/inet.h>
#include <string.h>
#include <strings.h>
#include <stdlib.h>
#include <ctype.h>
#include <signal.h>#include "wrap.h"#define SERV_PORT 8000void do_sig(int num)
{while (waitpid(0, NULL, WNOHANG) > 0);
}
int main(int argc, char *argv[])
{int lfd, cfd, len, i;int serv_port = SERV_PORT;char buf[1024], client_ip[128];struct sockaddr_in serv_addr, client_addr;socklen_t client_len;pid_t pid;struct sigaction act;act.sa_handler = do_sig;act.sa_flags = 0;sigemptyset(&act.sa_mask);sigaction(SIGCHLD, &act, NULL);if (argc == 2) serv_port = atoi(argv[1]);lfd = Socket(AF_INET, SOCK_STREAM, 0);bzero(&serv_addr, sizeof(serv_addr));serv_addr.sin_family = AF_INET;serv_addr.sin_port = htons((short)serv_port);serv_addr.sin_addr.s_addr = htonl(INADDR_ANY);Bind(lfd, (struct sockaddr *)&serv_addr, sizeof(serv_addr));Listen(lfd, 128);printf("wait for connect...\n");while (1) {client_len = sizeof(client_addr);cfd = Accept(lfd, (struct sockaddr *)&client_addr, &client_len);printf("client:%s\t%d\n",inet_ntop(AF_INET, &client_addr.sin_addr.s_addr, client_ip, sizeof(client_ip)),ntohs(client_addr.sin_port));pid = fork();if (pid == 0) {//in child 
            Close(lfd);while (1) {len = Read(cfd, buf, sizeof(buf));if (len <= 0)break;Write(STDOUT_FILENO, buf, len);for (i = 0; i < len; ++i)buf[i] = toupper(buf[i]);Write(cfd, buf, len);}Close(cfd);return 0;} else if (pid > 0) {//in parent
            Close(cfd);} else {perror("fork");exit(1);}}Close(lfd);return 0;
}

客戶端

#include <stdio.h>
#include <unistd.h>
#include <sys/types.h>
#include <sys/socket.h>
#include <string.h>
#include <arpa/inet.h>#define SERV_PORT 8000int main(int argc, char *argv[])
{int sfd, len;struct sockaddr_in serv_addr;char buf[4096];if (argc < 2) {printf("./client serv_ip\n");return 1;}sfd = socket(AF_INET, SOCK_STREAM, 0);bzero(&serv_addr, sizeof(serv_addr));serv_addr.sin_family = AF_INET;serv_addr.sin_port = htons(SERV_PORT);inet_pton(AF_INET, argv[1], &serv_addr.sin_addr.s_addr);connect(sfd, (struct sockaddr *)&serv_addr, sizeof(serv_addr));while (fgets(buf, sizeof(buf), stdin)) {write(sfd, buf, strlen(buf));len = read(sfd, buf, sizeof(buf));write(STDOUT_FILENO, buf, len);}return 0;
}

?

多線程并發服務器

#include <stdio.h>
#include <unistd.h>
#include <sys/types.h>
#include <sys/socket.h>
#include <arpa/inet.h>
#include <string.h>
#include <strings.h>
#include <stdlib.h>
#include <ctype.h>
#include <signal.h>#include "wrap.h"#define SERV_PORT 8000void *do_work(void *arg)
{char buf[1024];int len, i;int cfd = (int)arg;pthread_detach(pthread_self());while (1) {len = Read(cfd, buf, sizeof(buf));if (len <= 0)break;Write(STDOUT_FILENO, buf, len);for (i = 0; i < len; ++i)buf[i] = toupper(buf[i]);Write(cfd, buf, len);}Close(cfd);return 0;
}int main(int argc, char *argv[])
{int lfd, cfd;int serv_port = SERV_PORT;char client_ip[128];struct sockaddr_in serv_addr, client_addr;socklen_t client_len;pthread_t tid;if (argc == 2) serv_port = atoi(argv[1]);lfd = Socket(AF_INET, SOCK_STREAM, 0);bzero(&serv_addr, sizeof(serv_addr));serv_addr.sin_family = AF_INET;serv_addr.sin_port = htons((short)serv_port);serv_addr.sin_addr.s_addr = htonl(INADDR_ANY);Bind(lfd, (struct sockaddr *)&serv_addr, sizeof(serv_addr));Listen(lfd, 128);printf("wait for connect...\n");while (1) {client_len = sizeof(client_addr);cfd = Accept(lfd, (struct sockaddr *)&client_addr, &client_len);printf("client:%s\t%d\n",inet_ntop(AF_INET, &client_addr.sin_addr.s_addr, client_ip, sizeof(client_ip)),ntohs(client_addr.sin_port));pthread_create(&tid, NULL, do_work, (void *)cfd);}return 0;
}

?

多路I/O復用

select服務器

poll服務器

epoll服務器

?

?



轉載于:https://www.cnblogs.com/xiangtingshen/p/10909231.html

總結

以上是生活随笔為你收集整理的socket编程和并发服务器的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

国产午夜三级一二三区 | 国产高清 不卡 | 在线观看日韩精品视频 | 国产欧美最新羞羞视频在线观看 | 中文字幕一区二区三区四区 | 亚洲黄色在线 | 久久精品99国产精品酒店日本 | 91丨九色丨蝌蚪丨对白 | 色噜噜在线观看 | 在线观看蜜桃视频 | 在线观看韩国av | 中文字幕欲求不满 | 国产午夜精品一区二区三区在线观看 | 国产美女视频黄a视频免费 久久综合九色欧美综合狠狠 | 国产一级h | 欧美一区二区三区在线观看 | 99久久99视频只有精品 | 国产91亚洲 | 国产美女视频黄a视频免费 久久综合九色欧美综合狠狠 | 婷色| 插婷婷| 久久神马影院 | 欧美性黑人 | 一级欧美黄 | 99精品久久精品一区二区 | 久久免费视频在线观看6 | 免费a v在线 | 欧美最爽乱淫视频播放 | www亚洲国产 | 欧美一级片免费观看 | 国产亚洲在线观看 | 一级黄色片毛片 | 1024手机看片国产 | 五月激情视频 | 国产不卡在线 | 欧美成人亚洲 | 久久久999精品视频 国产美女免费观看 | 免费av网址在线观看 | 国产婷婷久久 | 免费看黄色91 | 伊人日日干 | 欧洲不卡av| 国产在线观看免 | 欧美日韩性视频 | 在线观看片 | 久久丝袜视频 | 国产精品久免费的黄网站 | 黄色在线看网站 | 99精品久久只有精品 | 五月在线视频 | 在线天堂中文www视软件 | 不卡av在线 | 欧美一二三区在线观看 | 亚洲免费资源 | 婷婷伊人五月 | 不卡的av在线 | 亚洲影视资源 | 在线观看免费一区 | 久久精品中文字幕一区二区三区 | 麻豆传媒在线免费看 | 中中文字幕av在线 | 久久精品79国产精品 | 亚洲成人在线免费 | 夜夜嗨av色一区二区不卡 | 91看片黄色 | 99久久精品网 | 香蕉影院在线播放 | 久久草av | 2019中文 | 在线观看精品黄av片免费 | 久久国产精品一区二区三区 | 天天操天天爱天天爽 | 91丨九色丨勾搭 | 深爱五月激情五月 | 欧美精品在线一区二区 | 国产精品99久久免费黑人 | 亚洲自拍偷拍色图 | 欧美精品一区二区在线观看 | 亚洲精选在线观看 | 欧美日韩在线观看一区 | 欧美日韩伦理在线 | 久久精品xxx| 久久久久久久av | 国产亚洲成av片在线观看 | 亚洲国产精品500在线观看 | 欧美日韩国产一区二 | 久草99 | 中文字幕 成人 | 午夜三级影院 | 91免费国产在线观看 | 免费在线观看午夜视频 | 婷婷黄色片 | 丁香婷婷激情啪啪 | 992tv在线 | 亚洲黄色小说网址 | 色中色亚洲 | 国产理论在线 | 成人91在线 | 欧美日韩在线视频一区 | 91视频最新网址 | 成人毛片100免费观看 | 久久99精品国产一区二区三区 | 婷婷丁香av | 日韩视频欧美视频 | 免费在线播放视频 | 日av免费 | 在线免费高清一区二区三区 | 国产色婷婷 | 91热在线 | 国产a级精品 | 97成人在线观看视频 | 精品国产一区二区三区久久影院 | 97在线公开视频 | 97超级碰碰 | 美女av电影 | 99视频精品全国免费 | 国产福利电影网址 | www一起操 | 亚洲高清在线精品 | 中文字幕在线免费观看 | 国产亚洲在线 | 精品一区三区 | av电影免费 | 婷婷在线资源 | 玖草影院| 国产亚洲精品久久久网站好莱 | 久草在线免费新视频 | 天天草天天操 | 成人免费观看电影 | 少妇视频一区 | 蜜臀av.com| 日韩久久精品一区二区三区下载 | 国产精品乱码久久 | 国产一区视频在线观看免费 | 精品免费观看 | 免费在线黄 | 悠悠av资源片 | 五月激情天 | 久久久午夜视频 | 久久久久影视 | 五月天六月婷婷 | 免费看的黄色小视频 | 欧美亚洲成人xxx | 久久人人插 | 国产一区 在线播放 | 草在线| 国内精品视频免费 | 五月天婷亚洲天综合网鲁鲁鲁 | 国产精品久久一区二区三区不卡 | 国产精品一区欧美 | 99c视频在线 | 久久久久亚洲最大xxxx | 久久精品com | 韩国av永久免费 | 91精品国产一区二区三区 | 国产中文字幕一区二区 | 亚洲一区二区精品在线 | 国产一二区精品 | 青草视频在线播放 | 成人av资源站 | 黄色免费大片 | 久久成 | 特级黄色片免费看 | 国产丝袜美腿在线 | 久久精品精品电影网 | 国产麻豆果冻传媒在线观看 | 中文字幕色婷婷在线视频 | 最新午夜 | 麻豆久久一区二区 | 国产精品第二十页 | 亚洲欧洲国产视频 | 免费看91的网站 | 黄色影院在线播放 | 国产黄免费 | 探花视频免费观看 | 亚洲视频1| 国产一级a毛片视频爆浆 | 特黄色大片 | 97在线免费视频 | 免费一级特黄录像 | 久久视频免费看 | 欧美少妇xx | 欧美黄色成人 | 99久免费精品视频在线观看 | 日韩免费电影 | 狠狠色伊人亚洲综合网站色 | wwwwww黄| 欧美精品在线一区二区 | 久草精品免费 | av成人动漫在线观看 | 免费在线观看一区 | 高清一区二区三区av | 国产在线高清视频 | 国产一级片不卡 | av网址最新 | 狠狠色狠狠色综合日日小说 | а中文在线天堂 | 在线国产视频一区 | 成人黄色av免费在线观看 | 久久久久久久久久影视 | 久久久久日本精品一区二区三区 | 国产成人精品一二三区 | 久久精精品| 中文字幕在线不卡国产视频 | 天天操天天操天天爽 | 97在线影视 | 亚洲天天 | 成年人视频在线免费 | 色wwwww| 国产一区二区三区在线 | 91高清一区 | 欧美日韩首页 | 亚洲欧洲中文日韩久久av乱码 | 在线超碰av | 一区二区三区四区五区六区 | 亚洲欧美视频网站 | 国产亚洲精品久久久久久久久久 | 国产精品久久久久国产精品日日 | 国产中文字幕网 | 国产精品久久久久aaaa九色 | 国产美女免费观看 | 久久久久国产精品视频 | 天天综合婷婷 | 日韩精品你懂的 | 久久综合九色综合久99 | 在线国产日韩 | 91亚色视频在线观看 | 就色干综合 | 中文在线免费视频 | 久久99热久久99精品 | 精品国产一区二区三区噜噜噜 | 国产精品3| 97碰在线| 91成人精品国产刺激国语对白 | 日韩手机在线观看 | 日韩国产精品一区 | 日韩精品视频免费专区在线播放 | 色七七亚洲影院 | 久久躁日日躁aaaaxxxx | 天天综合天天做天天综合 | 日韩欧美在线综合网 | 在线a人片免费观看视频 | 91亚洲精品久久久蜜桃网站 | 中文字幕资源网在线观看 | 久久五月网 | 久久看毛片 | a视频在线播放 | 日韩专区 在线 | 福利视频第一页 | 国产高清免费在线观看 | 黄色大片入口 | 精品女同一区二区三区在线观看 | 亚州激情视频 | 天天色天天射综合网 | 中文字幕在线观看完整版电影 | 99精品国产福利在线观看免费 | 激情综合中文娱乐网 | 最新av网址在线 | 日本午夜在线亚洲.国产 | 最近中文字幕视频完整版 | 最新日本中文字幕 | 在线精品国产 | 最近在线中文字幕 | 伊人天堂久久 | 波多野结衣在线视频免费观看 | 国产精品第7页 | 亚洲精品中文在线 | 国产二区电影 | 午夜在线观看一区 | 综合激情网... | 国产视频亚洲精品 | 久久小视频 | 香蕉视频91 | 99精品视频99 | 狠狠操操操 | 中文字幕有码在线播放 | 久久不见久久见免费影院 | 国产又黄又硬又爽 | 天天天天干 | 亚州欧美视频 | 色99导航 | 亚洲一区日韩 | 92国产精品久久久久首页 | 四虎海外影库www4hu | 涩涩网站免费 | 99麻豆视频 | 狠狠狠狠狠操 | 久久久2o19精品 | 欧美日韩国产在线 | 91亚洲国产成人久久精品网站 | 不卡av在线 | 青草视频在线看 | 国产精品综合久久久 | 韩国精品在线 | 国产视频久久 | 成人av一区二区兰花在线播放 | 久久免费中文视频 | 久精品一区 | 在线观看成年人 | 黄色av网站在线观看免费 | 一区二区三区免费在线 | 中文字幕色综合网 | 天堂av在线免费观看 | 91免费看黄色 | 最近日本mv字幕免费观看 | 久久免费视频6 | 亚洲女同videos | 美女视频一区二区 | 又黄又色又爽 | 91欧美日韩国产 | 久久免费视频网 | 免费看三级黄色片 | 性色va | 视频一区二区在线 | a√资源在线 | 欧美在线观看视频一区二区三区 | 婷婷av电影 | av丝袜在线 | 国产亚洲精品福利 | 婷婷爱五月天 | 国产高清在线精品 | 亚洲精品乱码久久久久久写真 | 久久99网 | 五月婷婷久久丁香 | 色综合天天狠天天透天天伊人 | 久久久久久黄色 | 日韩欧美精品一区二区 | av先锋中文字幕 | 午夜美女视频 | 日韩免费观看高清 | 狠狠操狠狠干天天操 | 欧美夫妻生活视频 | 最近免费中文字幕 | 国产美女主播精品一区二区三区 | av电影免费在线看 | 深爱激情五月婷婷 | 日韩理论片| 欧美成天堂网地址 | 欧美成人tv | 日韩精品高清视频 | 国产精品99久久久久久有的能看 | 最新亚洲视频 | 91中文字幕在线观看 | 国产成人高清 | 亚洲成年人在线播放 | 亚洲成人网在线 | 手机在线永久免费观看av片 | 婷婷丁香激情网 | 久久亚洲综合国产精品99麻豆的功能介绍 | 国产高清一区二区 | 视频一区二区在线观看 | 日韩精品在线看 | 91av蜜桃 | 在线视频app| 午夜91视频| 国产玖玖在线 | 亚洲综合色av| 一区在线观看 | 美女在线免费视频 | 久久视频免费在线 | 99精品久久久久 | 国产91全国探花系列在线播放 | 91香蕉视频在线下载 | 伊人五月天综合 | 久久这里有 | 精品久久精品久久 | 国产成人精品福利 | 91正在播放| 亚洲精品小视频在线观看 | 欧美日韩国产一二三区 | 三级黄色网址 | 一区二区三区视频网站 | 国产91全国探花系列在线播放 | 91人人爽久久涩噜噜噜 | 综合久久久久久久久 | 国产中文字幕在线 | 久久久久免费精品 | 黄色美女免费网站 | 国产精品一区二区三区视频免费 | 国产精品成人自产拍在线观看 | 久久久久久久久久电影 | 欧美日韩在线第一页 | 婷婷丁香自拍 | 久久久久久99精品 | 狠狠色丁香久久婷婷综合五月 | 免费观看的av网站 | 99久久精品久久久久久清纯 | 综合网天天色 | 一级黄色视屏 | 日韩中文在线字幕 | 色综合久久88色综合天天 | 日韩欧美一区二区三区视频 | 亚洲欧洲精品一区二区 | 久久综合久久综合这里只有精品 | 天天做天天射 | 最近日本中文字幕a | 一级黄色电影网站 | 奇米影视8888在线观看大全免费 | 亚洲成人资源在线观看 | 深夜国产在线 | 久操视频在线免费看 | 日韩在线一区二区免费 | 日日夜夜精品免费 | 久久综合天天 | 手机成人在线 | 91九色最新地址 | 国产99久久久精品视频 | 成人在线网站观看 | 伊色综合久久之综合久久 | 久久撸在线视频 | 婷婷久久综合网 | 久久情网 | 色福利网站 | 亚洲精品在线免费看 | 精品女同一区二区三区在线观看 | 精品视频免费久久久看 | 悠悠av资源片 | 手机在线永久免费观看av片 | 国产精品av免费观看 | 久久免费a| 美女网站久久 | 最新av在线网站 | 欧美成人精品xxx | 成人三级网站在线观看 | 日韩视频免费观看高清完整版在线 | 久久综合欧美精品亚洲一区 | 精品免费久久久久 | 在线播放日韩 | 日韩一区视频在线 | 狠狠黄| jizz18欧美18| av线上免费观看 | 国产91精品高清一区二区三区 | 在线99 | 超碰在线99 | 狠狠色狠狠色综合日日小说 | 国产亚洲无 | 涩涩在线 | 国产亚洲午夜高清国产拍精品 | 日韩一级成人av | 成人网色 | 天天干天天插伊人网 | 国产成人福利 | 国产美腿白丝袜足在线av | 99r精品视频在线观看 | 天天操天天射天天插 | 久久久在线 | 久久综合久久综合久久综合 | 成人a级网站 | 日本精品免费看 | 最近高清中文字幕 | 91一区啪爱嗯打偷拍欧美 | 麻豆成人网 | 亚洲综合狠狠干 | 国产精国产精品 | 亚洲日韩欧美一区二区在线 | 久久久久 免费视频 | 国产 日韩 欧美 中文 在线播放 | 午夜久久成人 | 国产91aaa | 国产高清在线免费视频 | 久久草精品 | 久久综合久久综合这里只有精品 | 国产精品一区在线观看 | 女人魂免费观看 | 99re热精品视频 | av在线专区 | 精品伊人久久久 | 国产精品美女久久久久久久 | 免费美女久久99 | 国产一区二区播放 | 日韩素人在线观看 | www.五月天婷婷.com | 永久免费的啪啪网站免费观看浪潮 | 在线观看视频免费大全 | 97超视频 | 国产手机在线 | 91福利视频网站 | 日韩二三区 | avav片| 欧美日韩xxxxx | 欧美在线观看视频 | 亚洲国产中文字幕在线观看 | www.五月激情.com| 亚洲欧洲一区二区在线观看 | 久久久人 | 在线看黄色的网站 | 欧美日韩精品免费观看 | 成人四虎影院 | 精品不卡视频 | 日韩v欧美v日本v亚洲v国产v | 亚洲做受高潮欧美裸体 | 99亚洲国产 | 国产在线精品视频 | 日韩在线电影 | 久久久久99999 | 97偷拍视频 | 国产xvideos免费视频播放 | 国产成人久久精品77777综合 | 99精品国产高清在线观看 | 毛片精品免费在线观看 | av片一区| 51久久成人国产精品麻豆 | 久久桃花网 | 一区二区视频电影在线观看 | 国产经典三级 | 一区二区成人国产精品 | 黄色软件在线观看 | 国产色婷婷精品综合在线手机播放 | 日韩欧美在线观看一区 | 精品国产视频在线 | 97成人精品视频在线播放 | 久久夜夜爽| 国产欧美在线一区 | 久久久久久久久久久电影 | 日韩视频a| 日本韩国欧美在线观看 | www.狠狠色 | 在线观看播放av | 在线观看亚洲 | 三级视频片 | 一区二区三区在线免费 | 91免费在线视频 | 色www精品视频在线观看 | 婷婷综合视频 | 久久高清免费观看 | 少妇18xxxx性xxxx片 | 五月综合久久 | 99资源网| 国产热re99久久6国产精品 | 亚洲欧美视频在线播放 | 一级片在线 | 999久久久精品视频 日韩高清www | 欧美 日韩 性 | www.久热 | 国产成人免费av电影 | 日本精品视频免费 | 亚洲国产精品一区二区久久,亚洲午夜 | 中文字幕欧美日韩va免费视频 | 99久久精品免费看国产四区 | 欧美人zozo | 69av网| 日韩在线高清免费视频 | 伊人狠狠色 | 欧美激情第一区 | 五月天丁香亚洲 | 91免费在线 | 97**国产露脸精品国产 | 摸bbb搡bbb搡bbbb | 国产色女 | 免费在线色视频 | 在线日韩一区 | 国产又粗又猛又爽又黄的视频先 | av在线激情| 国产伦精品一区二区三区在线 | av免费网站观看 | 97色在线观看 | 中文在线√天堂 | 久热色超碰| 88av网站| 成人黄色毛片 | 97狠狠干 | 国产精品精品 | 亚洲欧美在线视频免费 | 特级黄色一级 | 国产精品videossex国产高清 | 黄色亚洲大片免费在线观看 | 亚洲最新av网址 | 色.www | 国产123区在线观看 国产精品麻豆91 | 四虎国产免费 | 国产精品中文字幕在线 | 日韩av免费观看网站 | 国产一区二区三区在线 | 国产一区二区免费在线观看 | 亚洲成 人精品 | 国产精品一区二区av麻豆 | 久草视频免费 | 午夜视频福利 | 欧美吞精 | 91传媒免费在线观看 | 免费电影一区二区三区 | 久久久999免费视频 日韩网站在线 | 久久久不卡影院 | 精品久久一区二区 | 国产精品系列在线观看 | 久久狠狠一本精品综合网 | 日韩久久在线 | 一区二区三区在线不卡 | 日韩av影片在线观看 | 久久综合给合久久狠狠色 | 亚洲男男gaygay无套 | 日韩一级片大全 | 中文字幕在线观看2018 | 少妇bbw搡bbbb搡bbb | 精品视频免费播放 | 国产黄影院色大全免费 | 欧美日韩性 | 园产精品久久久久久久7电影 | 四虎国产精品免费观看视频优播 | 国产剧情亚洲 | 人人超碰在线 | 毛片网在线 | 91一区啪爱嗯打偷拍欧美 | 久久午夜鲁丝片 | 99精品国产免费久久久久久下载 | 精品96久久久久久中文字幕无 | 亚洲 av网站 | av在线成人 | 亚洲精品天天 | 中文资源在线官网 | 国产精品欧美日韩 | 午夜视频在线观看一区二区三区 | 日本精品久久久久中文字幕 | 欧美人zozo | 中文国产成人精品久久一 | 久操视频在线播放 | 国产午夜一级毛片 | 91社区国产高清 | 国产视频丨精品|在线观看 国产精品久久久久久久久久久久午夜 | 黄色片网站大全 | 天天爱天天舔 | 免费精品视频在线 | 成人黄色片免费看 | 91麻豆国产福利在线观看 | 日韩乱色精品一区二区 | 成人网中文字幕 | 久久精品男人的天堂 | 天天综合色天天综合 | 欧美另类交人妖 | 亚洲一区免费在线 | 色资源中文字幕 | 久久综合色影院 | 成人三级视频 | 中文字幕 国产专区 | 999视频网站 | 欧美日韩大片在线观看 | av片中文 | 天天干夜夜爽 | 性色av一区二区三区在线观看 | av免费在线看网站 | 午夜性福利 | 久久精品一区八戒影视 | 在线www色| 五月天婷婷免费视频 | 亚洲免费在线视频 | 国产一级特黄电影 | 国色综合 | 亚洲国产日韩欧美 | 麻豆国产网站 | 99免费| 色综合久久五月 | 成人国产精品久久久 | 欧美日韩国产一区二 | 免费视频久久久久 | 久久久久久网 | 91精品秘密在线观看 | 亚洲视屏| 婷婷久久亚洲 | 韩日三级av | 亚洲爱爱视频 | 欧美久久久久久久久久 | 日韩午夜视频在线观看 | 国产不卡精品视频 | 日韩精品久久久久久中文字幕8 | 成人av电影免费在线观看 | 中文字幕av免费观看 | 久久tv | 人人插人人舔 | 欧美日韩国产伦理 | 欧美 日韩 性 | 中文字幕在线日 | 国产伦理一区 | 免费看国产黄色 | 狠狠躁日日躁 | 中文字幕国产在线 | 成人av.com | 国产日韩精品在线观看 | 亚洲丝袜一区 | 国产高清不卡 | 亚洲欧美精品一区二区 | 色综合五月 | 日韩精品91偷拍在线观看 | 98精品国产自产在线观看 | 欧美日韩视频免费看 | 少妇bbw揉bbb欧美 | 久久精品视频国产 | 久久久www成人免费精品张筱雨 | 日韩中午字幕 | 国产黄色理论片 | 999男人的天堂 | 日本久久91 | 99精品乱码国产在线观看 | 啪啪免费观看网站 | 精品国产一区二区三区四 | 欧美在线日韩在线 | 伊人成人精品 | 麻豆精品传媒视频 | 99久久婷婷国产综合亚洲 | 精品国产一区二区三区在线观看 | 综合色影院 | 国产成人久久精品亚洲 | 婷婷激情在线 | 综合铜03 | 麻豆91精品| 午夜久操 | 中文字幕 国产 一区 | a级免费观看 | 久久97久久97精品免视看 | 99久久久国产精品免费99 | 综合色在线观看 | 欧美a级一区二区 | 91爱在线 | 亚洲最新视频在线播放 | 免费一区在线 | 亚洲国产精久久久久久久 | 又黄又网站| 亚洲精品www | 五月天综合网 | 国产91精品一区二区 | www国产亚洲 | 日韩中字在线 | 国产精品18久久久久久vr | 青青草国产精品 | 天天综合网 天天综合色 | 网站在线观看你们懂的 | 国产精品自产拍在线观看中文 | 久久久久久久久久久国产精品 | 精品高清视频 | 一级黄毛片| www.国产视频| 91黄色影视 | 午夜丁香网 | 五月婷婷视频在线观看 | 久久黄网站 | 婷婷av在线 | 成年人免费看的视频 | 国产五月色婷婷六月丁香视频 | 狠狠干中文字幕 | 黄色在线免费观看网站 | 久久视屏网| 婷婷视频在线播放 | 狠狠狠狠狠狠天天爱 | 在线观看亚洲精品视频 | 91视频这里只有精品 | 国产精品大尺度 | 国产又粗又长又硬免费视频 | 亚洲狠狠| 黄网站免费看 | 日韩黄色免费 | 色a综合| 色99之美女主播在线视频 | 国产福利一区二区三区视频 | 91av资源网 | 日韩视频一区二区在线观看 | 黄色网在线免费观看 | 久久成人欧美 | 免费日韩视 | 久久综合狠狠综合久久综合88 | 色婷婷亚洲婷婷 | 91亚色视频在线观看 | www.888av| 国产成人精品一区二区三区免费 | 国产日韩中文字幕 | 99精品视频在线播放免费 | 亚洲欧美视屏 | 91成人看片 | 日韩av片无码一区二区不卡电影 | 精品欧美一区二区在线观看 | 97人人澡人人添人人爽超碰 | 国产麻豆剧传媒免费观看 | 亚洲最大成人免费网站 | 激情五月伊人 | 欧美日韩在线观看一区二区三区 | av三级在线播放 | 美女网站黄免费 | 91色影院| 视色网站 | 在线观看av小说 | 在线岛国av | 少妇自拍av | 国产久草在线观看 | 在线av资源| 狠狠狠色丁香婷婷综合激情 | 国产99视频在线观看 | 五月视频| 国产高清精品在线 | 黄色小说免费观看 | 亚洲国产三级 | 国产精品人成电影在线观看 | 国产精品精品视频 | 亚洲精品免费在线观看视频 | 色免费在线 | 狠狠干免费 | 色小说av | 亚洲激情视频在线观看 | 婷婷视频在线 | 国产96视频 | 日韩高清免费电影 | 国产欧美日韩视频 | 日韩区视频 | 精品1区2区 | 久久综合毛片 | 久久精品首页 | 首页av在线 | 激情婷婷色 | 亚洲成a人片77777潘金莲 | 中文字幕在线观看资源 | 天堂素人在线 | 黄污视频大全 | 伊人黄色网 | 91精品国产九九九久久久亚洲 | 伊人天天综合 | 亚洲影院一区 | 午夜精品在线看 | 成人黄色在线看 | 欧美激情精品久久久久久免费印度 | 亚洲成人av在线电影 | 精品黄色在线观看 | 免费看黄色小说的网站 | 黄色一区三区 | 香蕉视频在线视频 | 免费黄色小网站 | 精品av在线播放 | 国产91在线观 | 久久狠狠婷婷 | 亚洲天天看| 深爱激情五月婷婷 | 久久国产一区二区 | 免费欧美高清视频 | 久久久久久久久毛片精品 | 69国产精品成人在线播放 | 欧美日韩在线播放 | 一区二区中文字幕在线观看 | 国产不卡在线观看视频 | 国产视频99 | 亚洲成年人在线播放 | 国产97碰免费视频 | 免费视频久久久久 | 91麻豆精品91久久久久同性 | 久久综合导航 | av电影免费在线 | 日韩 在线观看 | 国产精品久久精品 | 亚洲乱码精品久久久久 | 一级黄色电影网站 | 黄色免费网战 | 国产精品视频免费观看 | 久久理论电影 | 久久国产精品影片 | 五月婷婷狠狠 | 成 人 免费 黄 色 视频 | 最新av在线免费观看 | 狠狠狠干 | 久久国产系列 | 精品美女久久久久久免费 | 精品福利视频在线观看 | 日本激情视频中文字幕 | 免费在线观看污 | 国产精品18久久久久久久网站 | 国产视频美女 | 亚州性色 | 国产精品精品视频 | 在线观看网站av | 99久久99久久精品国产片果冰 | 五月综合在线观看 | 日韩午夜高清 | 国产最新在线视频 | 亚洲一级久久 | 日韩中文字幕a | 中文字幕资源网 国产 | 色婷婷激婷婷情综天天 | 午夜影院先 | 五月天com| a久久久久久 | 日日夜夜草 | 久久久久综合精品福利啪啪 | 天天做天天爱天天综合网 | 天天天色综合a | 狠狠色噜噜狠狠狠狠2021天天 | 黄色aaaaa | 国产精品一区二区你懂的 | 日本精品一区二区在线观看 | 国产精品1区2区在线观看 | 国产亚洲午夜高清国产拍精品 | 久久久久久久久久久成人 | 久久99精品波多结衣一区 | 中文字幕日韩高清 | 国产亚洲欧洲 | www.亚洲激情.com | 国产亚洲欧美在线视频 | 国产97视频在线 | 午夜精品久久久久久久99 | 日韩高清毛片 | 免费aa大片 | 日日夜夜狠狠干 | 亚洲国产精品电影在线观看 | 免费在线成人 | 国产黄在线 | 色97在线| 婷婷综合激情 | 五月在线视频 | 久久激情久久 | 亚洲精品av中文字幕在线在线 | 日本中文字幕网址 | av手机版| 在线中文字幕一区二区 | 在线 你懂 | a天堂免费 | 亚洲无吗视频在线 | 伊人春色电影网 | 久草在线视频免费资源观看 | 免费av视屏| 久久久久久久综合色一本 | 午夜精品视频福利 | 免费a网址 | 欧美a级在线免费观看 | 免费a级毛片在线看 | 国产一区二区三精品久久久无广告 | 在线观看日韩免费视频 | 日本久久久久久 | 99久高清在线观看视频99精品热在线观看视频 | 黄色免费在线看 | 日韩视频一 | 国产精品一区二区中文字幕 | 狠狠地操 | 婷婷六月久久 | 三级av片| 免费色视频网站 | 91久久精品一区 | 99精品视频免费观看视频 | 97在线看| 在线韩国电影免费观影完整版 | 国产色黄网站 | www.狠狠| 91精品国产91久久久久久三级 | 国产盗摄精品一区二区 | 国产精品99久久99久久久二8 | 日日夜夜精品视频 | 久插视频 | 国产91粉嫩白浆在线观看 | 日韩国产精品一区 | 免费97视频 | 久久精品7| 美女视频网站久久 | 亚洲视频免费在线看 | 四虎4hu永久免费 | 日本精品视频在线 | 国内综合精品午夜久久资源 | 亚洲第一区在线播放 | 91av官网| 国产成人精品一区二区三区 | 日本中文字幕在线视频 | 偷拍视频一区 | 亚洲免费一级电影 | 日本三级全黄少妇三2023 | 久久丁香网 | 久久精品欧美一区二区三区麻豆 | 日韩欧美视频免费看 | 日韩精品资源 | 亚洲激情 在线 | 天天干天天射天天插 | 久久五月天婷婷 | 五月婷婷综 | 在线免费观看的av网站 | 精品人妖videos欧美人妖 | 在线观看中文字幕视频 | 亚州精品一二三区 | 欧美精品资源 | 中文字幕亚洲综合久久五月天色无吗'' | 久久久久国产成人精品亚洲午夜 | 9热精品 | 四虎国产免费 | 一区二区三区日韩在线 | 中文字幕人成人 | 免费大片av | 一区二区三区四区不卡 | 午夜三级福利 | 五月婷婷色| 亚洲激情六月 | 91黄视频在线 | 天天干天天干天天干天天干天天干天天干 | 国产精品久久久久久久久久三级 | 91精品视频在线观看免费 | 狠狠色丁香婷婷综合橹88 | 色婷婷丁香 | 怡红院成人在线 | 六月丁香在线视频 | 91一区二区三区久久久久国产乱 | 成人av高清 | 成人v| 亚洲最新av | 国产中文字幕在线观看 | 天天摸夜夜操 | 伊人中文在线 | 狠狠躁夜夜躁人人爽超碰97香蕉 | 在线电影播放 | 国产精品精品国产婷婷这里av |