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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

NDK Socket编程:面向连接的通信(tcp)

發布時間:2024/4/18 编程问答 38 豆豆
生活随笔 收集整理的這篇文章主要介紹了 NDK Socket编程:面向连接的通信(tcp) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

使用posix socket api,java層調用c層。

AndroidManifest.xml:

<manifest xmlns:android="http://schemas.android.com/apk/res/android"package="com.apress.echo"android:versionCode="1"android:versionName="1.0" ><uses-sdkandroid:minSdkVersion="8"android:targetSdkVersion="19" /><applicationandroid:allowBackup="true"android:icon="@drawable/ic_launcher"android:label="@string/app_name"android:theme="@style/AppTheme" ><!-- 服務端app --> <!-- <activity --> <!-- android:name=".EchoServerActivity" --> <!-- android:label="@string/title_activity_echo_server" --> <!-- android:launchMode="singleTop" > --> <!-- <intent-filter> --> <!-- <action android:name="android.intent.action.MAIN" /> --><!-- <category android:name="android.intent.category.LAUNCHER" /> --> <!-- </intent-filter> --> <!-- </activity> --><!-- 客戶端app --><activityandroid:name=".EchoClientActivity"android:label="@string/title_activity_echo_client"android:launchMode="singleTop" ><intent-filter><action android:name="android.intent.action.MAIN" /><category android:name="android.intent.category.LAUNCHER" /></intent-filter></activity></application><uses-permission android:name="android.permission.ACCESS_WIFI_STATE" /><uses-permission android:name="android.permission.INTERNET" /></manifest>

AbstractEchoActivity:

package com.apress.echo;import android.app.Activity; import android.os.Bundle; import android.os.Handler; import android.util.Log; import android.view.View; import android.view.View.OnClickListener; import android.widget.Button; import android.widget.EditText; import android.widget.ScrollView; import android.widget.TextView;/*** 客戶端和服務端的抽象父類 共同有一個啟動按鈕,顯示日志的TextView,端口設置EditText* */ public abstract class AbstractEchoActivity extends Activity implementsOnClickListener {protected static final int TCP = 1;protected static final int UDP = 2;protected EditText editPort;// Port numberprotected Button btnStart;// server buttonprotected ScrollView scrollLog;//protected TextView tvLog;// log viewprivate final int layoutID;public AbstractEchoActivity(int layoutID) {this.layoutID = layoutID;}@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(layoutID);editPort = (EditText) findViewById(R.id.port_edit);btnStart = (Button) findViewById(R.id.start_button);scrollLog = (ScrollView) findViewById(R.id.scroll_view);tvLog = (TextView) findViewById(R.id.log_view);btnStart.setOnClickListener(this);}@Overridepublic void onClick(View v) {if (v == btnStart) {onStartButtonClicked();} else {Log.v("onClick", "onClick no done.");}}/*** 獲取端口* * @return*/protected Integer getPort() {Integer port;try {port = Integer.valueOf(editPort.getText().toString());} catch (Exception e) {e.printStackTrace();port = null;}return port;}protected void logMessage(final String message) {runOnUiThread(new Runnable() {@Overridepublic void run() {logMessageDirect(message);}});}protected void logMessageDirect(final String message) {tvLog.append(message);tvLog.append("\n");scrollLog.fullScroll(View.FOCUS_DOWN);}protected abstract void onStartButtonClicked();/*** 這個thread抽象出onBackground()方法作為線程的執行方法,在啟動前先設置控件狀態為不可用,同時清空日志。執行完畢后設置控件可用。* */protected abstract class AbstractEchoTask extends Thread {private final Handler handler;public AbstractEchoTask() {handler = new Handler();}protected void onPreExecute() {btnStart.setEnabled(false);// 清空日志tvLog.setText("");}/* * */@Overridepublic synchronized void start() {// 這里start是由主線程來調用的。調用之前先設置控件狀態。onPreExecute();super.start();}@Overridepublic void run() {// run是在新線程中運行的onBackground();// 用handler來修改控件handler.post(new Runnable() {@Overridepublic void run() {onPostExecute();}});}/*** 線程的執行體*/protected abstract void onBackground();/*** */protected void onPostExecute() {btnStart.setEnabled(true);}}static {System.loadLibrary("Echo");}}

客戶端app
EchoClientActivity:

package com.apress.echo;import android.os.Bundle; import android.widget.EditText;public class EchoClientActivity extends AbstractEchoActivity {private EditText editIp;private EditText editMessage;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);editIp = (EditText) findViewById(R.id.ip_edit);editMessage = (EditText) findViewById(R.id.message_edit);}public EchoClientActivity() {super(R.layout.activity_echo_client);}@Overrideprotected void onStartButtonClicked() {String ip = editIp.getText().toString();Integer port = getPort();String message = editMessage.getText().toString();if (0 != ip.length() && port != null && (0 != message.length())) {new ClientTask(ip, port, message).start();}}private native void nativeStartTcpClient(String ip, int port, String message)throws Exception;private class ClientTask extends AbstractEchoTask {private final String ip;private final int port;private final String message;public ClientTask(String ip, int port, String message) {this.ip = ip;this.port = port;this.message = message;}@Overrideprotected void onBackground() {logMessage("Starting client");try {nativeStartTcpClient(ip, port, message);} catch (Exception e) {logMessage(e.getMessage());}logMessage("Client terminated.");}}}

服務端app

EchoServerActivity:

package com.apress.echo;public class EchoServerActivity extends AbstractEchoActivity {public EchoServerActivity() {super(R.layout.activity_echo_server);}@Overrideprotected void onStartButtonClicked() {Integer port = getPort();if (port != null) {new ServerTask(port, TCP).start();} else {logMessage("port error");}}/*** 啟動tcp服務* * @param port* @throws Exception*/private native void nativeStartTcpServer(int port) throws Exception;/*** 啟動udp服務* * @param port* @throws Exception*/private native void nativeStartUdpServer(int port) throws Exception;private class ServerTask extends AbstractEchoTask {private final int port;private final int protocol;/*** @param port端口* @param protocol* 使用的協議*/public ServerTask(int port, int protocol) {this.port = port;this.protocol = protocol;}@Overrideprotected void onBackground() {logMessage("Starting server.");logMessage("server ip:" + Commons.getIpAddress());try {if (protocol == TCP) {nativeStartTcpServer(port);} else if (protocol == UDP) {nativeStartUdpServer(port);} else {logMessage("protocol error.");}} catch (Exception e) {logMessage(e.getMessage());}logMessage("Server terminated.");}} }

ndk代碼

com_apress_echo_EchoClientActivity.h:

/* DO NOT EDIT THIS FILE - it is machine generated */ #include <jni.h> /* Header for class com_apress_echo_EchoClientActivity */#ifndef _Included_com_apress_echo_EchoClientActivity #define _Included_com_apress_echo_EchoClientActivity #ifdef __cplusplus extern "C" { #endif /** Class: com_apress_echo_EchoClientActivity* Method: nativeStartTcpClient* Signature: (Ljava/lang/String;ILjava/lang/String;)V*/ JNIEXPORT void JNICALL Java_com_apress_echo_EchoClientActivity_nativeStartTcpClient(JNIEnv *, jobject, jstring, jint, jstring);#ifdef __cplusplus } #endif #endif

com_apress_echo_EchoServerActivity.h:

/* DO NOT EDIT THIS FILE - it is machine generated */ #include <jni.h> /* Header for class com_apress_echo_EchoServerActivity */#ifndef _Included_com_apress_echo_EchoServerActivity #define _Included_com_apress_echo_EchoServerActivity #ifdef __cplusplus extern "C" { #endif #undef com_apress_echo_EchoServerActivity_TCP #define com_apress_echo_EchoServerActivity_TCP 1L #undef com_apress_echo_EchoServerActivity_UDP #define com_apress_echo_EchoServerActivity_UDP 2L /** Class: com_apress_echo_EchoServerActivity* Method: nativeStartTcpServer* Signature: (I)V*/ JNIEXPORT void JNICALL Java_com_apress_echo_EchoServerActivity_nativeStartTcpServer(JNIEnv *, jobject, jint);/** Class: com_apress_echo_EchoServerActivity* Method: nativeStartUdpServer* Signature: (I)V*/ JNIEXPORT void JNICALL Java_com_apress_echo_EchoServerActivity_nativeStartUdpServer(JNIEnv *, jobject, jint);#ifdef __cplusplus } #endif #endif

實現socket函數的頭文件

SocketUtils.h:

#include <stdio.h> #include <stdarg.h> //errno #include <errno.h> #include <string.h>#include <sys/types.h> #include <sys/socket.h>//sockaddr_un #include <sys/un.h>//htons,sockaddr_in #include <netinet/in.h> //inet_ntop #include <arpa/inet.h> //close,unlink #include <unistd.h> //offsetof #include <stddef.h>#ifndef __SOCKET_UTILS__ #define __SOCKET_UTILS_//MAX log message length #define MAX_LOG_MESSAGE_LENGTH 256 //MAX data buffer size #define MAX_BUFFER_SIZE 80//打印日志到java環境中 static void LogMessage(JNIEnv* env, jobject obj, const char* format, ...) {//cache log method IDstatic jmethodID methodID = NULL;if (methodID == NULL) {jclass clazz = env->GetObjectClass(obj);methodID = env->GetMethodID(clazz, "logMessage","(Ljava/lang/String;)V");env->DeleteLocalRef(clazz);}if (methodID != NULL) {char buffer[MAX_BUFFER_SIZE];//將可變參數輸出到字符數組中va_list ap;va_start(ap, format);vsnprintf(buffer, MAX_LOG_MESSAGE_LENGTH, format, ap);va_end(ap);//轉換成java字符串jstring message = env->NewStringUTF(buffer);if (message != NULL) {env->CallVoidMethod(obj, methodID, message);env->DeleteLocalRef(message);}} }//通過異常類和異常信息拋出異常 static void ThrowException(JNIEnv* env, const char* className,const char* message) {jclass clazz = env->FindClass(className);if (clazz != NULL) {env->ThrowNew(clazz, message);env->DeleteLocalRef(clazz);} }//通過異常類和錯誤號拋出異常 static void ThrowErrnoException(JNIEnv* env, const char* className,int errnum) {char buffer[MAX_LOG_MESSAGE_LENGTH];//通過錯誤號獲得錯誤消息if (-1 == strerror_r(errnum, buffer, MAX_LOG_MESSAGE_LENGTH)) {strerror_r(errno, buffer, MAX_LOG_MESSAGE_LENGTH);}ThrowException(env, className, buffer); }//sock用到的一些公用方法 //創建一個socket:socket() static int NewTcpSocket(JNIEnv* env, jobject obj) {LogMessage(env, obj, "Constructing a new TCP socket...");int tcpSocket = socket(PF_INET, SOCK_STREAM, 0);if (-1 == tcpSocket) {ThrowErrnoException(env, "java/io/IOException", errno);}return tcpSocket; }//綁定 bind() static void BindSocketToPort(JNIEnv* env, jobject obj, int sd,unsigned short port) {struct sockaddr_in address;//清空結構體memset(&address, 0, sizeof(address));address.sin_family = PF_INET;//Bind to all addressaddress.sin_addr.s_addr = htonl(INADDR_ANY);//Convert port to network byte orderaddress.sin_port = htons(port);//Bind socketLogMessage(env, obj, "Binding to port %hu.", port);//sockaddr方便函數傳遞, sockaddr_in方便用戶設定, 所以需要的時候在這2者之間進行轉換if (-1 == bind(sd, (struct sockaddr*) &address, sizeof(address))) {ThrowErrnoException(env, "java/io/IOException", errno);}} //返回當前socket綁定的端口 static unsigned short GetSocketPort(JNIEnv* env, jobject obj, int sd) {unsigned short port = 0;struct sockaddr_in address;socklen_t addressLength = sizeof(address);if (-1 == getsockname(sd, (struct sockaddr*) &address, &addressLength)) {ThrowErrnoException(env, "java/io/IOException", errno);} else {port = ntohs(address.sin_port);LogMessage(env, obj, "Binding to the random port %hu.", port);}return port; }//監聽 listen() static void ListenOnSocket(JNIEnv*env, jobject obj, int sd, int backlog) {LogMessage(env, obj,"Listening on socket with a baklog of %d pending connections.",backlog);//listen()用來等待參數s 的socket 連線. 參數backlog 指定同時能處理的最大連接要求,//如果連接數目達此上限則client 端將收到ECONNREFUSED 的錯誤.//Listen()并未開始接收連線, 只是設置socket 為listen 模式, 真正接收client 端連線的是accept().//通常listen()會在socket(), bind()之后調用, 接著才調用accept().if (-1 == listen(sd, backlog)) {ThrowErrnoException(env, "java/io/IOException", errno);}}//根據地址打印IP和端口 static void LogAddress(JNIEnv* env, jobject obj, const char* message,const struct sockaddr_in* address) {char ip[INET_ADDRSTRLEN];if (NULL == inet_ntop(PF_INET, &(address->sin_addr), ip, INET_ADDRSTRLEN)) {ThrowErrnoException(env, "java/io/IOException", errno);} else {unsigned short port = ntohs(address->sin_port);LogMessage(env, obj, "%s %s:%hu", message, ip, port);} }//accept() static int AcceptOnSocket(JNIEnv* env, jobject obj, int sd) {struct sockaddr_in address;socklen_t addressLength = sizeof(address);LogMessage(env, obj, "Waiting for a client connection...");int clientSocket = accept(sd, (struct sockaddr*) &address, &addressLength);if (-1 == clientSocket) {ThrowErrnoException(env, "java/io/IOException", errno);} else {LogAddress(env, obj, "Client connection from ", &address);}return clientSocket; }//接收 recv() static ssize_t ReceiveFromSocket(JNIEnv* env, jobject obj, int sd, char* buffer,size_t bufferSize) {LogMessage(env, obj, "Receiving from the socket... ");ssize_t recvSize = recv(sd, buffer, bufferSize - 1, 0);if (-1 == recvSize) {ThrowErrnoException(env, "java/io/IOException", errno);} else {//字符串截斷buffer[recvSize] = NULL;if (recvSize > 0) {//接收成功,打印LogMessage(env, obj, "Received %d bytes:%s", bufferSize, buffer);} else {LogMessage(env, obj, "Client disconnected.");}}return recvSize; }//發送消息:send() static ssize_t SendToSocket(JNIEnv *env, jobject obj, int sd,const char* buffer, size_t bufferSize) {LogMessage(env, obj, "Sending to the socket... ");ssize_t sentSize = send(sd, buffer, bufferSize, 0);if (-1 == sentSize) {ThrowErrnoException(env, "java/io/IOException", errno);} else {if (sentSize > 0) {LogMessage(env, obj, "Send %d bytes: %s", sentSize, buffer);} else {LogMessage(env, obj, "Client disconnected.");}}return sentSize; }//鏈接到服務器 connect() static void ConnectToAddress(JNIEnv*env, jobject obj, int sd, const char*ip,unsigned short port) {LogMessage(env, obj, "Connecting to %s:%hu...", ip, port);struct sockaddr_in address;memset(&address, 0, sizeof(address));address.sin_family = PF_INET;//轉換ipif (0 == inet_aton(ip, &(address.sin_addr))) {ThrowErrnoException(env, "java/io/IOException", errno);} else {address.sin_port = htons(port);}if (-1 == connect(sd, (const sockaddr*) &address, sizeof(address))) {ThrowErrnoException(env, "java/io/IOException", errno);} else {LogMessage(env, obj, "Connected.");}}//----------------udp//創建udp socket static int NewUdpSocket(JNIEnv* env, jobject obj) {LogMessage(env, obj, "Constructing a new UDP socket...");int udpSocket = socket(PF_INET, SOCK_DGRAM, 0);if (-1 == udpSocket) {ThrowErrnoException(env, "java/io/IOException", errno);}return udpSocket; }#endif __SOCKET_UTILS_

實現代碼:
Echo.cpp:

#include <jni.h>#include "com_apress_echo_EchoServerActivity.h" #include "com_apress_echo_EchoClientActivity.h"#include "SocketUtils.h"//服務端:啟動監聽 //流程:socket()->listen()->accept()->recv()->send()_close() void JNICALL Java_com_apress_echo_EchoServerActivity_nativeStartTcpServer(JNIEnv *env, jobject obj, jint port) {int serverSocket = NewTcpSocket(env, obj);if (NULL == env->ExceptionOccurred()) {//綁定BindSocketToPort(env, obj, serverSocket, (unsigned short) port);if (NULL != env->ExceptionOccurred()) {goto exit;}//如果端口是0,打印出當前隨機分配的端口if (0 == port) {GetSocketPort(env, obj, serverSocket);if (NULL != env->ExceptionOccurred()) {goto exit;}}//監聽 鏈接4ListenOnSocket(env, obj, serverSocket, 4);if (NULL != env->ExceptionOccurred()) {goto exit;}//int clientSocket = AcceptOnSocket(env, obj, serverSocket);if (NULL != env->ExceptionOccurred()) {goto exit;}char buffer[MAX_BUFFER_SIZE];ssize_t recvSize;ssize_t sentSize;while (1) {//接收recvSize = ReceiveFromSocket(env, obj, clientSocket, buffer,MAX_BUFFER_SIZE);if ((0 == recvSize) || (NULL != env->ExceptionOccurred())) {break;}//發送sentSize = SendToSocket(env, obj, clientSocket, buffer,(size_t) recvSize);if ((0 == sentSize) || (NULL != env->ExceptionOccurred())) {break;}}//close the client socketclose(clientSocket);}exit: if (serverSocket > 0) {close(serverSocket);} }//客戶端:連接 void JNICALL Java_com_apress_echo_EchoClientActivity_nativeStartTcpClient(JNIEnv *env, jobject obj, jstring ip, jint port, jstring message) {int clientSocket = NewTcpSocket(env, obj);if (NULL == env->ExceptionOccurred()) {const char* ipAddress = env->GetStringUTFChars(ip, NULL);if (NULL == ipAddress) {goto exit;}ConnectToAddress(env, obj, clientSocket, ipAddress,(unsigned short) port);//釋放ipenv->ReleaseStringUTFChars(ip, ipAddress);//connect exception checkif (NULL != env->ExceptionOccurred()) {goto exit;}const char* messageText = env->GetStringUTFChars(message, NULL);if (NULL == messageText) {goto exit;}//這里的size不用release??jsize messageSize = env->GetStringUTFLength(message);SendToSocket(env, obj, clientSocket, messageText, messageSize);//env->ReleaseStringUTFChars(message, messageText);if (NULL != env->ExceptionOccurred()) {goto exit;}char buffer[MAX_BUFFER_SIZE];ReceiveFromSocket(env, obj, clientSocket, buffer, MAX_BUFFER_SIZE);}exit: if (clientSocket > -1) {close(clientSocket);} }//啟動udp服務端 void JNICALL Java_com_apress_echo_EchoServerActivity_nativeStartUdpServer(JNIEnv *, jobject, jint) {}// // // // // // //

分別編譯客戶端和服務端,安裝到兩臺不同的手機上。
運行結果:

代碼下載

http://download.csdn.net/detail/hai836045106/8062933

總結

以上是生活随笔為你收集整理的NDK Socket编程:面向连接的通信(tcp)的全部內容,希望文章能夠幫你解決所遇到的問題。

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

精品久久久久久亚洲综合网站 | 91丨九色丨国产在线观看 | 二区三区在线 | 久草香蕉在线视频 | 激情五月婷婷综合 | 久久久影院一区二区三区 | 久草视频中文 | 精品久久一二三区 | 国产精品亚洲精品 | 亚洲精品在线观看中文字幕 | 中文字幕在线观看国产 | 久久99精品波多结衣一区 | 亚洲免费在线视频 | 日韩a在线观看 | 久久视频 | 在线观看视频福利 | 色网站免费在线观看 | 国产亚洲精品久久久久久移动网络 | 天堂av在线网址 | 精品国偷自产在线 | 丁香婷婷激情啪啪 | 免费观看日韩 | 日韩av午夜在线观看 | www黄com| 日韩免费播放 | 国产在线观看av | 欧美激情视频一区二区三区 | 超碰97网站 | 亚洲精品国精品久久99热一 | 国产日韩欧美在线影视 | 亚洲黄色app | 丁香六月天婷婷 | 久久精品一区二区 | 亚洲国产成人在线播放 | 麻豆影视在线播放 | 美女禁18| 狠狠干夜夜操天天爽 | 黄色av观看 | 欧美大片mv免费 | 超碰在线天天 | 国产婷婷vvvv激情久 | 久久综合九色综合久久久精品综合 | 久久久久久久综合色一本 | 91久久久久久国产精品 | 亚州精品国产 | 日日干天天 | 久久免费看av | 国产精品国产三级国产 | 黄色一级片视频 | 成人羞羞视频在线观看免费 | 97人人精品 | 亚洲欧美怡红院 | 午夜国产福利在线 | 在线视频一二区 | 国产 成人 久久 | 国产精品视频免费看 | 九九热视频在线播放 | 精品一区二区在线观看 | 日本中文字幕网址 | bbbbb女女女女女bbbbb国产 | 在线观看91精品国产网站 | 中文字幕视频 | 日本动漫做毛片一区二区 | 精品一区电影国产 | 天天天天天天干 | 国产91aaa| 欧美成人xxxxx| 婷婷色在线资源 | 国产欧美日韩精品一区二区免费 | 日韩在线视频线视频免费网站 | 91在线播放综合 | www.天天射.com | 欧美精品中文字幕亚洲专区 | 国产色视频123区 | 青青草国产精品视频 | 激情婷婷| 国产成人久久精品77777 | 亚州av成人| 免费视频久久久久 | 日韩综合色 | 亚洲美女在线一区 | 蜜臀一区二区三区精品免费视频 | 中文字幕国产亚洲 | 午夜av激情 | 天天天天色射综合 | 韩国三级在线一区 | 搡bbbb搡bbb视频 | 中文字幕在线观看你懂的 | 国产最新在线 | 免费在线国产精品 | 高清视频一区 | 黄色软件在线观看 | 国产日韩精品一区二区三区 | 亚洲精品国产精品乱码不99热 | 99精品久久久久久久久久综合 | 久久免费看视频 | 精品久久久久久久久久久久久 | 国产中文字幕视频在线观看 | 成人va在线观看 | 色婷婷激情电影 | 久久久久久久久久久精 | 草草草影院 | 日韩欧美精品一区二区三区经典 | 香蕉精品视频在线观看 | 97视频在线观看免费 | 看片网站黄 | 天天干夜夜操视频 | 国产高清不卡一区二区三区 | 精品视频在线免费 | 欧美日韩高清一区二区三区 | 精品国产乱码久久 | 欧美一区二区视频97 | 色综合久久久久久久 | 日韩网站免费观看 | 久久极品 | 国产99久久精品一区二区永久免费 | 亚洲理论电影网 | 国产精品一区二区62 | 最新中文字幕在线资源 | 久热爱| 国产午夜视频在线观看 | 亚洲欧洲国产视频 | 天天干 夜夜操 | 91九色蝌蚪视频 | 中文字幕乱码电影 | 中文在线亚洲 | 最近中文字幕完整高清 | 国产亚洲片| 欧美伦理电影一区二区 | www免费看片com | 亚洲欧美乱综合图片区小说区 | 欧美日韩另类在线观看 | 激情网五月婷婷 | 亚洲精品自在在线观看 | 狠狠操夜夜操 | 精品国产久 | 国产欧美综合在线观看 | 国产 欧美 日韩 | 免费中午字幕无吗 | 91精品导航 | 国产视频观看 | 182午夜在线观看 | 91成人在线观看喷潮 | 在线 欧美 日韩 | 五月天婷婷狠狠 | 99视频在线免费看 | 久久激情日本aⅴ | 精品亚洲男同gayvideo网站 | 中文字幕在线免费看线人 | 在线视频日韩欧美 | 日韩亚洲在线观看 | 超级碰碰免费视频 | av九九九 | 欧美男女爱爱视频 | 欧美另类美少妇69xxxx | 国产日产欧美在线观看 | 日韩二区三区在线 | 国产专区视频在线观看 | 久久午夜精品影院一区 | 亚洲国产精彩中文乱码av | 日本中文乱码卡一卡二新区 | 国产黄a三级三级三级三级三级 | 黄色大片日本免费大片 | 成人av免费在线 | 国产精品乱码久久久 | av在线网站大全 | 国产 字幕 制服 中文 在线 | 天堂在线视频免费观看 | 天天天干天天天操 | 三级视频片 | 久操视频在线 | 国产黄视频在线观看 | 免费视频一区 | 婷婷色吧 | 99久久久国产免费 | 亚洲高清视频在线观看免费 | 一本一道久久a久久精品蜜桃 | 国产免费中文字幕 | 天天天色 | 亚洲综合色网站 | 一级黄色片在线 | 久草在线视频中文 | 成人av一区二区在线观看 | 黄色免费在线看 | 六月丁香激情综合色啪小说 | 少妇自拍av | 三级黄色片在线观看 | 国产精品私拍 | 国产午夜小视频 | av在线免费播放 | 五月天国产精品 | 久久视频在线观看 | 黄色av一级 | 亚洲精品国产日韩 | 婷婷久久一区 | 韩国三级av在线 | 免费人人干 | 国产日韩欧美在线观看视频 | 亚洲精品视频在 | 国产最新在线观看 | 欧美性一级观看 | 玖玖999| 婷婷av综合 | 日韩一区在线播放 | www国产精品com | 国产精品久久人 | 97精品国产| 国产免费一区二区三区最新 | 国产1级视频 | 久久久精品高清 | 在线免费观看亚洲视频 | 插插插色综合 | 国产精品嫩草影院9 | 88av色| 久久国产精品成人免费浪潮 | av高清一区二区三区 | 精品一二| 国产精品第7页 | 在线国产不卡 | 久久爱影视i | 91精品国产一区二区三区 | 婷婷在线免费视频 | 国产高清永久免费 | 日日夜夜网 | 综合色中文| 中文字幕 在线 一 二 | 婷婷色社区 | 国产在线小视频 | 97看片| 亚洲电影久久 | 亚洲日本韩国一区二区 | 狠狠狠狠狠狠操 | 亚洲视频,欧洲视频 | 日韩黄在线观看 | 国产精品1000| 日本精油按摩3 | 欧美一级在线 | 色综合久久综合 | 色综合五月天 | 亚洲精选在线观看 | 日本在线观看中文字幕无线观看 | 国产99久久久久 | 国产一区二区三区免费在线观看 | 九九热精品视频在线播放 | 中文字幕在线视频免费播放 | 欧美日韩综合在线观看 | 免费一级片在线 | 欧美性春潮 | 在线观看一级片 | 国产精品美女久久久网av | 国产护士hd高朝护士1 | 伊人五月婷 | 综合国产在线观看 | 国产精品精品久久久久久 | 久久精品99国产国产 | 国产精品免费看久久久8精臀av | 国产在线观看你懂得 | 免费精品久久久 | 日本成人中文字幕在线观看 | 免费在线成人av电影 | 日韩理论影院 | 欧美国产一区二区 | 五月天欧美精品 | 欧美成人精品三级在线观看播放 | 黄色网www | 亚洲视频第一页 | 一区二区视频在线观看免费 | 国产黄色在线看 | 日韩极品在线 | 中文字幕 在线看 | 久草在线视频在线观看 | 国产99久久99热这里精品5 | 一本一道波多野毛片中文在线 | 毛片精品免费在线观看 | 91麻豆精品国产91久久久更新时间 | 日韩毛片在线一区二区毛片 | 中文字幕日韩有码 | 国产片网站 | 在线看不卡av | 婷婷新五月 | 久久国产精品一区二区三区 | 成人黄色av网站 | 国产精品福利在线播放 | 国产一级在线观看 | 成人中文字幕在线观看 | 欧美一区二区三区在线 | 天天干天天射天天爽 | 99久久精品电影 | 不卡精品视频 | 国产精品美女网站 | 色综合婷婷久久 | 国产黄在线 | 精品一区二区三区在线播放 | 国产精品嫩草影视久久久 | 天天操夜夜拍 | 亚洲不卡在线 | 免费视频成人 | 97免费中文视频在线观看 | 国产裸体bbb视频 | 国产一区二区三区免费观看视频 | 99色人| 久久好看 | 五月婷婷在线视频观看 | 丰满少妇在线观看网站 | 日韩网站免费观看 | 69热国产视频 | 麻豆av一区二区三区在线观看 | 在线免费高清 | wwwwww色 | 日韩国产欧美视频 | 久久精彩免费视频 | 国产最新视频在线观看 | 97超碰中文 | 成人在线观看你懂的 | 超碰在线成人 | 亚洲色五月 | 久久国产一二区 | 国产精品igao视频网入口 | 在线观看爱爱视频 | 久久视奸 | 亚洲尺码电影av久久 | 成人免费视频免费观看 | 久久国语| 99精品视频在线看 | 久久99网站 | 国产精品久久久久久69 | 草久视频在线观看 | 最新在线你懂的 | a视频在线看 | 亚洲欧美一区二区三区孕妇写真 | av免费在线看网站 | 天天干天天干天天射 | 国产视频精品免费播放 | 91精品欧美 | 亚洲欧洲国产视频 | 黄色大片视频网站 | 丁香六月中文字幕 | 免费三级骚 | 国产色视频网站 | 日韩精品久久中文字幕 | 九草在线视频 | 六月色婷婷 | 天天射日| 激情xxxx | 久久精品欧美一区二区三区麻豆 | 久久99精品视频 | 亚洲激情在线视频 | 日日碰狠狠躁久久躁综合网 | 国产成人亚洲在线观看 | 天天综合天天做 | 91av网址| 在线免费观看黄网站 | 国产成人在线综合 | 亚洲在线看 | 日韩精品久久久久久久电影竹菊 | 91黄站| 一区二区三区影院 | 国产精品久久久久久久久久久久午夜片 | 伊人手机在线 | 成人av资源网站 | 久久 地址 | 免费又黄又爽 | 久久视频| 日本天天色 | 91成人午夜 | 免费久久视频 | 色综合久久66 | 中文字幕在线观看的网站 | 久久精品直播 | 九九热精品视频在线播放 | 黄色福利视频网站 | 欧美做受高潮电影o | 成人久久久久久久久久 | 久久视频在线免费观看 | 综合激情网| 综合久久精品 | 成人免费观看网址 | 免费观看性生交 | 夜夜天天干 | 亚洲第一区精品 | 99视频+国产日韩欧美 | 天天色棕合合合合合合 | 日日干天天射 | 国产精品麻豆果冻传媒在线播放 | 中文字幕xxxx| 国产精品国产三级国产aⅴ9色 | 天海冀一区二区三区 | 伊人天天色 | 人人澡人 | 成人超碰在线 | 欧美日韩性视频 | 成人av中文字幕在线观看 | 久久人人爽爽人人爽人人片av | 欧美一级日韩三级 | av综合站| 欧美日韩国内在线 | 91污视频在线 | 亚洲精品婷婷 | 午夜在线免费观看 | 在线成人性视频 | 欧美精品在线一区二区 | www.黄色小说.com | 久久影视一区 | 国产在线91在线电影 | 日韩黄色免费 | 91成人网在线观看 | 奇米影视999| 精品女同一区二区三区在线观看 | 久久久久99精品国产片 | 黄色毛片一级 | 精品国产一区二 | 黄色一级大片免费看 | 美女视频黄免费网站 | 欧美在线视频不卡 | 一区二区不卡视频在线观看 | 在线观看v片 | www黄| 免费的国产精品 | 天天操夜夜逼 | 成人久久18免费网站 | 色www免费视频 | av大全在线播放 | 国产精品一区二区久久精品爱微奶 | 午夜精品视频一区二区三区在线看 | 亚洲乱码精品 | 色网站免费在线观看 | 亚一亚二国产专区 | 久久久久久国产精品久久 | av一级网站 | 国产一区二区三区高清播放 | 久久成人一区 | 国产精品免费观看久久 | www.夜色321.com | 亚洲国产精品久久久 | 国产高清视频在线播放一区 | 亚洲精品视频在线免费播放 | 久久久久观看 | 成人免费在线网 | 国产精品免费成人 | 九九热视频在线免费观看 | 精品国产成人av | 五月婷在线视频 | 国产高清99 | 国产永久免费观看 | 超碰在线98| 日韩视频在线不卡 | 亚洲美女精品区人人人人 | 啪啪小视频网站 | 久草视频视频在线播放 | 欧美国产不卡 | 综合色狠狠 | 99婷婷狠狠成为人免费视频 | 美女网站黄在线观看 | 亚洲高清不卡av | 91在线porny国产在线看 | 成人免费视频网址 | 日本在线观看视频一区 | 日本巨乳在线 | 中文字幕电影高清在线观看 | av黄色免费看 | 超碰人人在线观看 | 西西444www大胆无视频 | 精品在线看 | 草久视频在线观看 | 日韩一区二区免费在线观看 | 久操免费视频 | 91在线产啪 | 999久久久久久久久 69av视频在线观看 | 激情亚洲综合在线 | 啪啪激情网 | 人人爽人人爽人人爽人人爽 | 国产群p视频 | 天天操天天爱天天爽 | 在线观看福利网站 | 国产成人精品一区二区在线 | 在线免费观看国产黄色 | 中文字幕在线播放一区 | 天天色天天色 | 久草在线中文视频 | 伊人久久在线观看 | 99精品视频免费全部在线 | 欧美久久久影院 | 免费av片在线 | 国产一区二区在线播放视频 | 国产剧情亚洲 | 国产香蕉视频 | 国产精品九九视频 | 久久久久久97三级 | 国产精品视频最多的网站 | 久草网站在线 | 亚洲成av人影片在线观看 | 成人一级片免费看 | 日本xxxxav | 视频在线观看日韩 | 成人黄色片在线播放 | 免费一级日韩欧美性大片 | 日韩a在线播放 | 黄色国产高清 | 人人草在线观看 | 国产精品国产三级国产专区53 | 国产精品v a免费视频 | 久草香蕉在线视频 | 99精品免费视频 | 欧美精品免费视频 | 黄网站www | 午夜影院先 | 中文字幕乱码电影 | 一区二区久久久久 | 欧美日韩高清一区 | 中文字幕在线观看完整版电影 | 黄色一级网 | 91精品视频在线播放 | 免费黄在线观看 | 天天天天色射综合 | 视频在线观看国产 | 伊人五月综合 | 91精品在线视频 | 中文字幕91视频 | 99热这里只有精品国产首页 | 成人aaa毛片 | 国产精品嫩草影院123 | 97成人精品区在线播放 | a黄色影院 | 97精品视频在线 | 亚洲婷婷在线 | 亚洲日韩中文字幕 | 粉嫩高清一区二区三区 | 久久久久9999亚洲精品 | 国产亚洲在线 | 欧美日韩精品国产 | 奇米影视8888在线观看大全免费 | 午夜精品久久久久久久久久 | 在线视频免费观看 | 97视频在线看 | 天天夜夜亚洲 | 久久综合精品国产一区二区三区 | 亚洲精品456在线播放第一页 | 中文字幕资源网在线观看 | 日本女人逼 | 日韩精品网址 | 国产精品原创在线 | 三上悠亚一区二区在线观看 | 亚洲成人av免费 | 成人国产精品一区二区 | 亚洲女欲精品久久久久久久18 | 欧美老人xxxx18 | 国产女人18毛片水真多18精品 | 欧美精品久久久 | 亚洲成人999 | 在线观看视频一区二区 | 色999在线| 国产综合香蕉五月婷在线 | 国产男女无遮挡猛进猛出在线观看 | 亚洲精品乱码久久久久久写真 | av中文字幕电影 | 麻豆视频在线免费观看 | 高清久久久 | 91大神免费视频 | 日韩免费不卡av | 三级a毛片 | 国产视频中文字幕在线观看 | 波多野结衣在线观看一区 | 国产成人精品一区二区三区福利 | 一区二区三区免费播放 | 日韩精品一区在线播放 | 亚洲成年人av | 国产免费av一区二区三区 | 久久久久久久久久久影视 | 色在线视频 | 欧美色图亚洲图片 | 狠狠做六月爱婷婷综合aⅴ 日本高清免费中文字幕 | 国产亚洲午夜高清国产拍精品 | 手机av电影在线观看 | 久久综合爱| 亚洲综合欧美精品电影 | 欧美少妇影院 | 天天综合色网 | 国产又粗又猛又爽又黄的视频先 | 久久久国产一区 | 亚洲精品国产品国语在线 | 国产高清亚洲 | 西西444www大胆高清图片 | 亚洲人天堂 | 成人一级黄色片 | 亚洲综合涩 | 亚洲综合欧美日韩狠狠色 | 免费激情网 | 一级片观看 | 人人干人人草 | 亚洲精品视频免费 | 99久久日韩精品视频免费在线观看 | 亚洲国产成人高清精品 | 国产高清在线不卡 | 国产午夜精品一区二区三区欧美 | 99精品小视频 | 毛片视频电影 | 久久精品中文字幕少妇 | 亚洲欧洲精品一区二区 | 久草成人在线 | 国产美女精彩久久 | 97综合在线 | av色图天堂网 | 国色天香第二季 | 成人小视频在线播放 | 天天摸天天弄 | 午夜视频导航 | 亚洲欧洲精品一区二区 | 狠狠的操你 | 婷婷干五月 | 亚洲精品永久免费视频 | 黄色网中文字幕 | 亚洲国产精品影院 | 国产手机视频在线观看 | 国产最新在线视频 | 在线v片免费观看视频 | 99精品视频99 | 天天操天天干天天 | 色六月婷婷 | 日本中文乱码卡一卡二新区 | 深爱综合网 | 欧美日韩国产区 | 亚洲在线精品视频 | 欧美精选一区二区三区 | 亚洲黄色在线观看 | 福利视频导航网址 | 国产成人精品网站 | 婷婷久久综合网 | 日韩在线观看中文 | 久久狠狠婷婷 | 超碰在线97国产 | 亚洲欧洲精品一区二区精品久久久 | 精品自拍sae8—视频 | 8x8x在线观看视频 | 成人小视频在线免费观看 | 五月婷婷六月丁香在线观看 | 久久毛片高清国产 | 久久激情影院 | 国产免费视频一区二区裸体 | 亚洲午夜av久久乱码 | 在线观看视频亚洲 | 91亚洲在线观看 | 永久免费av在线播放 | 超碰97.com | 草久久久久 | 久久五月婷婷丁香社区 | 久草免费电影 | 成片免费观看视频999 | 中文字幕在 | a级片韩国 | 黄色av网站在线观看免费 | 国产成人一区二区三区免费看 | 黄色免费高清视频 | 欧美精品久久久久 | 在线观看免费黄视频 | 操操日日 | 99免费在线观看视频 | 九色91在线视频 | 国产成人黄色在线 | 中文在线8资源库 | 欧美亚洲成人xxx | 久久视频这里有久久精品视频11 | 久久视频在线免费观看 | 成人精品久久久 | 午夜免费视频网站 | 国产精品系列在线播放 | 成人黄色在线观看视频 | 久久婷婷一区 | 国产精品99视频 | 五月综合激情婷婷 | 久久国产免费视频 | 欧美精品亚洲精品 | 日韩在线高清免费视频 | 亚洲综合网站在线观看 | 亚洲国产中文字幕在线观看 | 波多野结衣视频一区 | 在线国产中文字幕 | 中文字幕二区三区 | 欧美夫妻生活视频 | 中文字幕文字幕一区二区 | 伊人天天综合 | 天天干,夜夜操 | 欧美91精品国产自产 | 久久伊人热| 国产视频资源 | 国产专区欧美专区 | 日韩欧美精品在线 | 91在线日本 | 婷婷丁香激情网 | 伊人干综合 | 99在线观看视频网站 | 欧美视频在线观看免费网址 | 国产精品成人久久 | 国产在线视频一区二区 | 欧美一级视频一区 | 亚洲国产精品va在线看黑人 | 在线观看黄色大片 | 99久久超碰中文字幕伊人 | 在线观看网站黄 | 黄色1级毛片 | 夜夜视频| 97人人模人人爽人人喊中文字 | 麻豆av一区二区三区在线观看 | 婷婷在线网站 | 日韩精品免费一区二区 | 精品美女久久久久 | 日本色小说视频 | 亚洲精品欧美视频 | 久久刺激视频 | av大片免费在线观看 | 日韩专区在线播放 | 干 操 插 | 激情视频综合网 | 久久久久久久久久伊人 | 日韩资源在线播放 | 国产精品午夜av | 91精品91 | 欧美日韩精品在线观看视频 | 激情偷乱人伦小说视频在线观看 | 美女久久久久久久久久久 | www日日夜夜 | 日韩欧美在线免费观看 | 久久久久久久精 | 国产97碰免费视频 | 性色xxxxhd| 久草精品免费 | 精品九九九九 | 国产精品视频最多的网站 | 欧美xxxxx在线视频 | 亚洲一区二区麻豆 | 视频在线91| 日本久久精 | 一区二区三区国产欧美 | 精品国产乱码久久久久久三级人 | 国产伦理一区二区 | 天天操天天色天天射 | 成年人在线观看视频免费 | 国产高清一级 | 久久久精品免费观看 | 色天天综合久久久久综合片 | 国产在线不卡 | 国产在线播放一区 | 中文字幕综合在线 | 视频国产在线观看18 | 中文字幕在线免费观看视频 | 久久伊人国产精品 | 福利区在线观看 | 日韩激情片在线观看 | 五月婷婷操 | 97国产视频 | 日韩精品影视 | 日韩三级免费观看 | 久久精品久久久久电影 | 欧美一区二区三区不卡 | 一级精品视频在线观看宜春院 | 91成人在线观看喷潮 | 日韩激情三级 | 久久精品www人人爽人人 | 亚洲精品动漫久久久久 | 日韩精品中文字幕有码 | 欧美日韩免费一区 | 九九免费在线观看 | 亚洲国产网址 | 日本久久电影 | 久久视频中文字幕 | 深爱婷婷 | 日韩在线视频免费观看 | 免费av在线网 | 97国产超碰在线 | 欧美午夜精品久久久久 | 亚洲欧美日本国产 | 中文字幕一区二区在线观看 | 国产精品久久艹 | 国产精品国产三级国产aⅴ无密码 | 一区在线观看 | 久久99热精品这里久久精品 | 99激情网 | 三级视频片 | 久久久久久毛片精品免费不卡 | 黄色aa久久| 国产精品美女999 | 中文在线中文资源 | 色综合天天综合网国产成人网 | 91久久电影 | 97色在线| 精品欧美一区二区在线观看 | 婷婷香蕉| 久久综合五月天婷婷伊人 | 黄网站色欧美视频 | 国产中文字幕视频在线观看 | 午夜成人免费影院 | 不卡视频一区二区三区 | 国产va精品免费观看 | 亚洲国产精品人久久电影 | 成人理论在线观看 | 日韩欧在线 | 国产成人在线免费观看 | 日韩大片免费在线观看 | av天天色 | 99热在线观看免费 | 五月婷婷爱 | 91看片淫黄大片一级在线观看 | 亚洲人天堂 | 日本黄色免费大片 | 狠狠色丁香九九婷婷综合五月 | 日韩精品久久一区二区 | 91av视屏 | 精品在线不卡 | 久久99久国产精品黄毛片入口 | 探花视频免费观看高清视频 | 亚洲精品短视频 | 久草视频网 | 中文字幕在线观看完整版电影 | 国产一区视频免费在线观看 | 欧美国产三区 | 国产我不卡 | 国产一区二区在线免费播放 | 美女视频永久黄网站免费观看国产 | 亚洲女人天堂成人av在线 | 91精选| 日韩电影在线观看一区 | 天天艹天天爽 | 日韩最新av在线 | 九九免费在线观看 | 99久久久久久 | 欧美a级免费视频 | 亚洲成人av电影在线 | 热久久电影 | 欧洲激情在线 | 国产又粗又猛又黄又爽的视频 | 玖玖色在线观看 | 亚洲一区二区麻豆 | 亚洲精选99 | 成人在线观看免费 | 免费裸体视频网 | av电影免费在线看 | 人人讲| 国产精品久久久久亚洲影视 | 一区三区视频 | 99精品在线免费 | 国产精品热| 日韩欧在线 | 亚洲涩涩网 | 欧美日韩国产在线精品 | 亚洲另类xxxx | 91香蕉视频在线下载 | 欧美亚洲另类在线视频 | av电影在线免费 | 国产精品久久久久久av | 亚洲一区免费在线 | 日韩有码中文字幕在线 | 久久久久麻豆 | 精品乱码一区二区三四区 | 99在线免费视频 | 在线观看中文av | 久久人人爽人人爽人人 | 久久视频网址 | 四虎永久视频 | 色一色在线| 婷婷激情综合 | 在线日韩中文字幕 | 国产成人高清av | 国产中文a | 欧美aa级 | 一区三区视频 | 91丨九色丨91啦蝌蚪老版 | 在线香蕉视频 | 中文字幕专区高清在线观看 | av电影免费在线看 | 成人国产精品电影 | 久久国产亚洲精品 | 免费看特级毛片 | 伊人国产视频 | 亚洲欧美日韩在线一区二区 | 国产三级精品三级在线观看 | 久久久精品| 五月综合网站 | 又黄又刺激的视频 | 日本黄区免费视频观看 | 久久99免费视频 | 九九视频网 | 国产美腿白丝袜足在线av | 日日夜夜狠狠 | 国产中文欧美日韩在线 | 色婷婷福利 | 国产成人一区二区精品非洲 | 国产精品免费观看国产网曝瓜 | 国产在线观看地址 | 日韩av影视在线观看 | 欧美一级视频在线观看 | 国产精品综合久久 | 久草影视在线 | 午夜精品视频一区 | av免费在线网站 | 成人四虎影院 | 亚洲国产剧情 | 婷婷色婷婷 | 天天躁天天操 | 久久伊人五月天 | 久久精品男人的天堂 | 色婷婷综合视频在线观看 | 在线观看网站你懂的 | 日韩成人精品 | 91色网址 | 国产精品一区久久久久 | 亚洲国产精品久久久 | 天天做综合网 | 天天干天天看 | 91免费观看| 日韩av不卡在线播放 | 亚洲国产精品成人va在线观看 | 综合精品久久久 | 日韩精品久久中文字幕 | 狠狠色丁香九九婷婷综合五月 | 亚洲理论影院 | 国产精品久久久久久久久久久免费 | 亚洲精品h | 日日夜夜天天综合 | 成人av电影在线观看 | 日本中文字幕在线视频 | 久久99偷拍视频 | 精品国产一区二区三区久久 | 最近中文字幕国语免费高清6 | 国产精品久久一卡二卡 | 国产成人精品免费在线观看 | 日韩超碰在线 | 婷婷久久网 | 欧美日韩亚洲在线观看 | 亚洲精品视频第一页 | 国内精品久久久久久 | 99久热在线精品 | 精品女同一区二区三区在线观看 | 最新国产精品拍自在线播放 | 欧美一级性生活片 | av韩国在线| 国内一级片在线观看 | 日韩欧美在线综合网 | 麻豆视频在线观看免费 | 四虎亚洲精品 | 国产一级片视频 | 在线成人免费电影 | 久久这里只有精品久久 | 国产精品黄色影片导航在线观看 | 麻豆传媒视频在线播放 | 一区二区三区视频在线 | 99精品视频在线播放免费 | 丁香综合av | 亚洲综合视频在线播放 | 久草网视频在线观看 | 免费视频a | 91夫妻视频 | 久久精品久久精品 | 欧美日韩一级久久久久久免费看 | 精品国产电影一区二区 | 97国产在线播放 | 亚洲伦理电影在线 | 亚洲在线视频网站 | 少妇视频一区 | 五月天婷婷视频 | 在线观看视频一区二区 | 欧美黄色免费 | 国产婷婷在线观看 | 久久刺激视频 | 久久久www成人免费精品 | 国内精自线一二区永久 | 免费精品视频在线 | 国色天香第二季 | 黄色小网站在线 | 久久免费的视频 | 黄色影院在线观看 | 天天天天天天天天操 | 欧美午夜理伦三级在线观看 | 日韩丝袜在线观看 | 婷婷激情欧美 | 中文字幕一区二区三区乱码在线 | av电影在线免费 | 亚洲成av人影院 | 五月天亚洲婷婷 | 国产婷婷| 日本91在线 | 欧美a级一区二区 | 久久国产美女视频 | 97国产精品亚洲精品 | 91激情视频在线播放 | 免费色视频 | 欧美成人一区二区 | 久久国产精品系列 | 久久污视频 | 天天爽天天摸 | 美女视频黄在线观看 | 蜜臀久久99精品久久久久久网站 | 激情中文字幕 | 久久精品91久久久久久再现 | 丁香六月在线 | 欧洲在线免费视频 | 欧美成人亚洲成人 | 久久这里只有精品1 | 国产99区 | 免费又黄又爽视频 |