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

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? mynetchatdlg.cpp

?? 這是一個小型的局域網聊天的程序
?? CPP
字號:
// MyNetChatDlg.cpp : implementation file
//

#include "stdafx.h"
#include "MyNetChat.h"
#include "MyNetChatDlg.h"

#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
#define WM_NETICON   WM_USER+100
///////////////////////////////////////////////////////////////////////////////////
SOCKET m_socket,m_hSocket;//host sock
sockaddr_in m_addr;//host address
sockaddr_in m_raddr;//host recive client address
sockaddr_in m_caddr;
char *message=NULL;
char *name=NULL;
int nItem;
CString changstr;
bool exitmsg=FALSE;
CString strname;
UINT AcceptThread(LPVOID lpvoid);
//CWinThread *pAccept;
SOCKET m_cSocket;//client sock
NOTIFYICONDATA tnd;  //add icon
bool ShowApp=FALSE;
/////////////////////////////////////////////////////////////////////////////
// CAboutDlg dialog used for App About

class CAboutDlg : public CDialog
{
public:
	CAboutDlg();

// Dialog Data
	//{{AFX_DATA(CAboutDlg)
	enum { IDD = IDD_ABOUTBOX };
	//}}AFX_DATA

	// ClassWizard generated virtual function overrides
	//{{AFX_VIRTUAL(CAboutDlg)
	protected:
	virtual void DoDataExchange(CDataExchange* pDX);    // DDX/DDV support
	//}}AFX_VIRTUAL

// Implementation
protected:
	//{{AFX_MSG(CAboutDlg)
	//}}AFX_MSG
	DECLARE_MESSAGE_MAP()
};

CAboutDlg::CAboutDlg() : CDialog(CAboutDlg::IDD)
{
	//{{AFX_DATA_INIT(CAboutDlg)
	//}}AFX_DATA_INIT
}

void CAboutDlg::DoDataExchange(CDataExchange* pDX)
{
	CDialog::DoDataExchange(pDX);
	//{{AFX_DATA_MAP(CAboutDlg)
	//}}AFX_DATA_MAP
}

BEGIN_MESSAGE_MAP(CAboutDlg, CDialog)
	//{{AFX_MSG_MAP(CAboutDlg)
	//}}AFX_MSG_MAP
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// CMyNetChatDlg dialog

CMyNetChatDlg::CMyNetChatDlg(CWnd* pParent /*=NULL*/)
	: CDialog(CMyNetChatDlg::IDD, pParent)
{
	//{{AFX_DATA_INIT(CMyNetChatDlg)
	m_sendstr = _T("");
	m_showstr = _T("");
	m_name = _T("");
	//}}AFX_DATA_INIT
	// Note that LoadIcon does not require a subsequent DestroyIcon in Win32
	m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME);
}

void CMyNetChatDlg::DoDataExchange(CDataExchange* pDX)
{
	CDialog::DoDataExchange(pDX);
	//{{AFX_DATA_MAP(CMyNetChatDlg)
	DDX_Control(pDX, IDC_EDIT1, m_showname);
	DDX_Control(pDX, IDC_USER, m_List);
	DDX_Control(pDX, IDC_SHOWSTR, m_show);
	DDX_Control(pDX, IDC_SENDSTR, m_send);
	DDX_Control(pDX, IDC_SENDED,m_SD);
	DDX_Control(pDX, IDC_FINDUSER,m_FU);
	DDX_Text(pDX, IDC_SENDSTR, m_sendstr);
	DDX_Text(pDX, IDC_SHOWSTR, m_showstr);
	DDX_Text(pDX, IDC_EDIT1, m_name);
	//}}AFX_DATA_MAP
}

BEGIN_MESSAGE_MAP(CMyNetChatDlg, CDialog)
	//{{AFX_MSG_MAP(CMyNetChatDlg)
	ON_WM_SYSCOMMAND()
	ON_WM_PAINT()
	ON_WM_QUERYDRAGICON()
	ON_COMMAND(ID_CREATHOST, OnCreathost)
	ON_COMMAND(ID_EXITCHAT, OnExitchat)
	ON_NOTIFY(NM_DBLCLK, IDC_USER, OnDblclkUser)
	ON_WM_CREATE()
	ON_COMMAND(ID_EXITWL, OnExitwl)
	ON_COMMAND(ID_SHOWAPP, OnSetSever)
	ON_BN_CLICKED(IDC_SENDED,OnSended)
	ON_BN_CLICKED(IDC_FINDUSER, OnFinduser)
	//}}AFX_MSG_MAP
	ON_MESSAGE(WM_NETICON,AddIcon)
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// CMyNetChatDlg message handlers

BOOL CMyNetChatDlg::OnInitDialog()
{
	CDialog::OnInitDialog();

	// Add "About..." menu item to system menu.
   	// IDM_ABOUTBOX must be in the system command range.
	ASSERT((IDM_ABOUTBOX & 0xFFF0) == IDM_ABOUTBOX);
	ASSERT(IDM_ABOUTBOX < 0xF000);

	CMenu* pSysMenu = GetSystemMenu(FALSE);
	if (pSysMenu != NULL)
	{
		CString strAboutMenu;
		strAboutMenu.LoadString(IDS_ABOUTBOX);
		if (!strAboutMenu.IsEmpty())
		{
			pSysMenu->AppendMenu(MF_SEPARATOR);
			pSysMenu->AppendMenu(MF_STRING, IDM_ABOUTBOX, strAboutMenu);
		}
	}

	// Set the icon for this dialog.  The framework does this automatically
	//  when the application's main window is not a dialog
	SetIcon(m_hIcon, TRUE);			// Set big icon
	SetIcon(m_hIcon, FALSE);		// Set small icon
	
	// TODO: Add extra initialization here
	    char localname[64];
	    GetName(localname);
		changstr=localname;
	//////////////////////////////////
	return TRUE;  // return TRUE  unless you set the focus to a control
}

void CMyNetChatDlg::OnSysCommand(UINT nID, LPARAM lParam)
{
	if ((nID & 0xFFF0) == IDM_ABOUTBOX)
	{
		CAboutDlg dlgAbout;
		dlgAbout.DoModal();
	}
	else
	{
		CDialog::OnSysCommand(nID, lParam);
	}
}

// If you add a minimize button to your dialog, you will need the code below
//  to draw the icon.  For MFC applications using the document/view model,
//  this is automatically done for you by the framework.

void CMyNetChatDlg::OnPaint() 
{
	if (IsIconic())
	{
		CPaintDC dc(this); // device context for painting

		SendMessage(WM_ICONERASEBKGND, (WPARAM) dc.GetSafeHdc(), 0);

		// Center icon in client rectangle
		int cxIcon = GetSystemMetrics(SM_CXICON);
		int cyIcon = GetSystemMetrics(SM_CYICON);
		CRect rect;
		GetClientRect(&rect);
		int x = (rect.Width() - cxIcon + 1) / 2;
		int y = (rect.Height() - cyIcon + 1) / 2;

		// Draw the icon
		dc.DrawIcon(x, y, m_hIcon);
	}
	else
	{
		CDialog::OnPaint();
	}
}

// The system calls this to obtain the cursor to display while the user drags
//  the minimized window.
UINT AcceptThread(LPVOID lpvoid)
{
    int Addrlength=sizeof(m_raddr);
	m_socket=accept(m_hSocket,(LPSOCKADDR)&m_raddr,&Addrlength);
	if(m_socket==INVALID_SOCKET)
	{
		closesocket(m_hSocket);
		m_socket=NULL;
		AfxMessageBox("Accept Error");
		return 0;
	}
	AfxBeginThread(AcceptThread,NULL);
	char buff[1024];
	int ret=recv(m_socket,buff,1024,0);
    if(ret==0||ret==SOCKET_ERROR)
	{
		closesocket(m_socket);
		AfxMessageBox("recv bad");
		return 0;
	}	
    if(buff!=NULL)
	{
		int msgleng=0;
		int nameleng=0;
		int i;
		nameleng=buff[0];
		name=new char[nameleng+1];
		for(i=0;i<nameleng;i++)
		{name[i]=buff[i+1];}
         msgleng=buff[nameleng+1];
		 message=new char[msgleng+1];
		 for(i=0;i<msgleng;i++)
		 {
			 message[i]=buff[i+2+nameleng];
		 }
         name[nameleng]='\0';
         message[msgleng]='\0';
		 CMyNetChatDlg* SM=(CMyNetChatDlg*)(AfxGetApp()->m_pMainWnd);
		 SM->ShowRecvData();
	}	
	return 0;
}

HCURSOR CMyNetChatDlg::OnQueryDragIcon()
{
	return (HCURSOR) m_hIcon;
}

void CMyNetChatDlg::OnCreathost() //create host
{
	if(m_hSocket!=NULL)
	{
		closesocket(m_hSocket);
		m_hSocket=NULL;
	}
	if(m_hSocket==NULL)
	{
		m_hSocket=socket(AF_INET,SOCK_STREAM,0);
		ASSERT(m_hSocket!=NULL);
	}
	UpdateData(TRUE);
	m_addr.sin_addr.S_un.S_addr=INADDR_ANY;
	m_addr.sin_family=AF_INET;
	m_addr.sin_port=htons(52428);
	int ret=0;
	ret=bind(m_hSocket,(LPSOCKADDR)&m_addr,sizeof(m_addr));
	if(ret==SOCKET_ERROR)
	{
		closesocket(m_hSocket);
		AfxMessageBox("Bind Error");
		return ;
	}
	
	ret=listen(m_hSocket,12);
	if(ret==SOCKET_ERROR)
	{
		closesocket(m_hSocket);
		AfxMessageBox("Listen Error");
		return ;
	}
	AfxBeginThread(AcceptThread,NULL);
}

void CMyNetChatDlg::OnExitchat() 
{
	// EXit Application and all thread;
	exitmsg=TRUE;
	Shell_NotifyIcon(NIM_DELETE,&tnd);
	CDialog::OnOK();
		
}
void CMyNetChatDlg::GetName(char Temp[64])
{
  gethostname(Temp,64);
}

CString CMyNetChatDlg::GetIP(CString username)
{
  CString hostaddr;
  struct hostent *hostname=gethostbyname(username);
  for(int i=0;hostname!=NULL&&hostname->h_addr_list[i];i++)
  {
  hostaddr=inet_ntoa(*(struct in_addr *)hostname->h_addr_list[i]);
  }
  return hostaddr;
}
void CMyNetChatDlg::OnSended() 
{
	// send message to host
	m_showname.GetWindowText(m_name);
	if(m_name.IsEmpty())
	{
		AfxMessageBox("請選擇發送用戶");
		return;
	}
     strname=GetIP(m_name);
	 if(m_cSocket!=NULL)
	{
		closesocket(m_cSocket);
		m_cSocket=NULL;
	}
	if(m_cSocket==NULL)
	{
		m_cSocket=socket(AF_INET,SOCK_STREAM,0);
		ASSERT(m_cSocket!=NULL);
	}
	UpdateData(TRUE);
    m_caddr.sin_addr.S_un.S_addr=inet_addr(strname);
	m_caddr.sin_family=AF_INET;
	m_caddr.sin_port=htons(52428);
    int ret=0;
	int caddrlength=sizeof(m_caddr);
	ret=connect(m_cSocket,(LPSOCKADDR)&m_caddr,caddrlength);
	if(ret==SOCKET_ERROR)
	{
		connectFlag=FALSE;
		int err=WSAGetLastError();
		if(err==10061)
			AfxMessageBox(_T("服務器未打開"));
		return ;
	}
	connectFlag=TRUE;
	if(connectFlag==TRUE)
	{
		m_send.GetWindowText(m_sendstr);
		if(m_sendstr.IsEmpty())
		{
			AfxMessageBox(_T("不能發空消息!"));
			return;
		}
		CString sendstr;
		char *sendbuf=NULL;
		sendstr+=char(changstr.GetLength());
		sendstr+=changstr;
		sendstr+=char(m_sendstr.GetLength());
		sendstr+=m_sendstr;
		sendbuf=sendstr.GetBuffer(0);
		sendstr.ReleaseBuffer(-1);
		int slength;
		slength=send(m_cSocket,sendbuf,sendstr.GetLength(),0);
		if(slength!=sendstr.GetLength()||m_cSocket==SOCKET_ERROR)
		{
			int errs=WSAGetLastError();
			AfxMessageBox(_T("發送消息失敗"));
			return ;
		}
		m_send.SetWindowText("");
		return ;
	}
	AfxMessageBox(_T("請先連接"));
}

void CMyNetChatDlg::OnDblclkUser(NMHDR* pNMHDR, LRESULT* pResult) 
{
	// TODO: Add your control notification handler code here
	POSITION pos;
	m_showname.SetWindowText("");
	nItem=0;
	pos=m_List.GetFirstSelectedItemPosition();
	if(pos==NULL)
	{
		return ;
	}else
	{
		while(pos)
		{
			nItem=m_List.GetNextSelectedItem(pos);
		}
	m_name=m_List.GetItemText(nItem,0);
	m_showname.SetWindowText(m_name);
	}
	*pResult = 0;
	
}
void CMyNetChatDlg::ShowRecvData()
{
	CString tempstr;
	tempstr="";
	m_show.SetWindowText("");
	if(name!=NULL&&message!=NULL)
	{
	tempstr=name;
	m_showstr=message;
	m_show.SetWindowText(tempstr+":"+m_showstr);	
	message=NULL;
	name=NULL;
	}
}
void CMyNetChatDlg::OnOK()
{
}
void CMyNetChatDlg::OnCancel()
{
}

int CMyNetChatDlg::OnCreate(LPCREATESTRUCT lpCreateStruct) 
{
	if (CDialog::OnCreate(lpCreateStruct) == -1)
		return -1;
	
      tnd.cbSize=sizeof(NOTIFYICONDATA);
      tnd.hWnd=this->m_hWnd;
      tnd.uID=IDR_MAINFRAME;
      tnd.uFlags=NIF_MESSAGE|NIF_ICON|NIF_TIP;
      tnd.uCallbackMessage=WM_NETICON;
      tnd.hIcon=LoadIcon(AfxGetInstanceHandle(),
      MAKEINTRESOURCE(IDR_MAINFRAME)); 
      strcpy(tnd.szTip,"無聊");
      Shell_NotifyIcon(NIM_ADD,&tnd);	
	return 0;
}
void CMyNetChatDlg::AddIcon(WPARAM wParam,LPARAM lParam)
{
	CMenu W_menu,*pmenu;
	UINT uMouseMsg;
	UINT uID;
	POINT pos;
	uID=(UINT)wParam;
	uMouseMsg=(UINT)lParam;
	W_menu.LoadMenu(IDR_WULIAO);
    pmenu=W_menu.GetSubMenu(0);
	CWnd *pMain=AfxGetMainWnd();
	if(uMouseMsg==WM_RBUTTONDOWN)
	{
		switch(uID)
		{
		case IDR_MAINFRAME:
			GetCursorPos(&pos);
			pMain->SetForegroundWindow();
			::TrackPopupMenu(pmenu->m_hMenu,0,pos.x,pos.y,0,pMain->GetSafeHwnd(),NULL);
		break;
		}
	}
     return;
}
void CMyNetChatDlg::OnExitwl() 
{
	// TODO: Add your command handler code here
	OnExitchat();
}

void CMyNetChatDlg::OnSetSever() 
{
	// TODO: Add your command handler code here
	OnCreathost();
}

BOOL CMyNetChatDlg::PreTranslateMessage(MSG* pMsg) 
{
	// TODO: Add your specialized code here and/or call the base class
	if(pMsg->message==WM_SYSKEYDOWN)
	{
		short AltState=::GetKeyState(0x12);
		if((AltState)&&(pMsg->wParam==VK_F4))
		{
			OnExitchat();
		}
	}
	if(pMsg->message==WM_KEYDOWN)
	{
		if(pMsg->wParam==VK_TAB)
			OnSended();
	}
	return CDialog::PreTranslateMessage(pMsg);
}
void CMyNetChatDlg::GetLanActiveComputer()
{
	CString strTemp;
    struct hostent *host;

//struct in_addr *ptr; // 檢索IP地址 

    DWORD dwScope = RESOURCE_CONTEXT;
    NETRESOURCE *NetResource = NULL;
    HANDLE hEnum;
    WNetOpenEnum( dwScope, NULL, NULL, 
             NULL, &hEnum );
    if ( hEnum )
	{
    DWORD Count = 0xFFFFFFFF;
    DWORD BufferSize = 2048;
    LPVOID Buffer = new char[2048];
    WNetEnumResource( hEnum, &Count, 
        Buffer, &BufferSize );
    NetResource = (NETRESOURCE*)Buffer;

    char szHostName[200];
    unsigned int i;

    for ( i = 0;i < BufferSize/sizeof(NETRESOURCE);i++, NetResource++ )
    {
        if ( NetResource->dwUsage ==RESOURCEUSAGE_CONTAINER &&NetResource->dwType ==RESOURCETYPE_ANY )
        {
            if ( NetResource->lpRemoteName )
            {
                CString strFullName =NetResource->lpRemoteName;
                if ( 0 ==strFullName.Left(2).Compare("\\\\") )   
                    strFullName =strFullName.Right(strFullName.GetLength()-2);
                gethostname( szHostName,strlen( szHostName ) );
                host = gethostbyname(strFullName);
                if(host == NULL) continue; 
                strTemp.Format("%s",strFullName);
                m_List.InsertItem(i,strTemp,0);
            }
        }
    }
    delete Buffer;
    WNetCloseEnum( hEnum ); 
}
}

void CMyNetChatDlg::OnFinduser() 
{
	GetLanActiveComputer();
	Sleep(1000);
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲bt欧美bt精品777| 欧美一级一区二区| 欧美日韩成人在线| 欧美精品一区二区蜜臀亚洲| 亚洲欧洲无码一区二区三区| 美女在线观看视频一区二区| 不卡在线观看av| 精品国产区一区| 亚洲国产一区二区a毛片| 国产一区二三区| 3atv在线一区二区三区| 中文字幕日韩精品一区| 国产精品中文字幕欧美| 欧美日韩精品一区二区| 亚洲欧美一区二区三区孕妇| 国产激情视频一区二区在线观看 | 亚洲图片欧美一区| 懂色中文一区二区在线播放| 欧美成人福利视频| 日韩电影在线观看网站| 欧美午夜不卡视频| 亚洲老妇xxxxxx| 不卡影院免费观看| 国产精品―色哟哟| 成人深夜视频在线观看| 国产婷婷精品av在线| 美国一区二区三区在线播放| 欧美一区二区在线免费播放 | 成人app网站| 精品国产乱码久久久久久老虎| 日韩精品每日更新| 99久久精品免费看国产免费软件| 精品成人在线观看| 国产一区激情在线| 国产色产综合色产在线视频| 国产一区二区三区日韩| 精品国产乱码久久久久久影片| 三级久久三级久久| 欧美一级久久久| 免费人成精品欧美精品| 日韩欧美二区三区| 国产一区二区三区四| 欧美国产丝袜视频| 91蜜桃婷婷狠狠久久综合9色| 日韩美女视频一区二区| 欧美性高清videossexo| 五月天视频一区| 日韩一级黄色大片| 国产伦精品一区二区三区视频青涩| 精品国产亚洲一区二区三区在线观看| 国产成人免费视频一区| 在线播放视频一区| 亚洲伦理在线免费看| 成人一区二区三区中文字幕| 日韩午夜在线观看| 亚洲国产另类av| 99久久精品国产网站| 国产亚洲制服色| 美女尤物国产一区| 5858s免费视频成人| 亚洲夂夂婷婷色拍ww47| av成人免费在线观看| 久久久不卡网国产精品一区| 日韩电影在线一区| 欧美夫妻性生活| 亚洲午夜久久久久久久久电影网| eeuss影院一区二区三区| 久久精品亚洲一区二区三区浴池| 久久不见久久见免费视频1| 欧美日韩久久一区二区| 亚洲一区二区三区影院| 91女人视频在线观看| 亚洲欧美在线另类| 国产福利精品一区二区| 26uuu国产在线精品一区二区| 日韩精品成人一区二区三区| 欧美日韩激情一区| 天天色天天爱天天射综合| 男人的j进女人的j一区| 欧美不卡一区二区| 欧美色视频在线观看| 国产成人免费高清| 日韩高清欧美激情| 亚洲蜜臀av乱码久久精品蜜桃| 制服丝袜在线91| 色欧美日韩亚洲| 国产成人8x视频一区二区| 欧美aⅴ一区二区三区视频| 一区二区在线观看视频在线观看| 久久婷婷色综合| 91麻豆精品久久久久蜜臀| 91视频免费观看| 国产成人在线视频网站| 免费在线观看精品| 午夜视频在线观看一区二区三区| 中文字幕欧美国产| 久久中文字幕电影| 日韩片之四级片| 欧美日韩国产大片| 久久综合一区二区| 日韩一级视频免费观看在线| 欧美三级电影在线看| 91玉足脚交白嫩脚丫在线播放| 国产精品正在播放| 狠狠色狠狠色综合| 久久成人18免费观看| 美女性感视频久久| 美女高潮久久久| 麻豆高清免费国产一区| 蜜桃视频第一区免费观看| 日日夜夜免费精品视频| 天天亚洲美女在线视频| 亚洲成人综合视频| 亚洲sss视频在线视频| 亚洲午夜久久久久久久久久久| 亚洲一区在线观看免费| 一区二区三区丝袜| 亚洲综合丁香婷婷六月香| 亚洲一区二区欧美激情| 亚洲国产成人va在线观看天堂| 一区二区三区欧美久久| 亚洲午夜av在线| 日韩av一区二| 日韩一区二区三区视频在线| 国产美女精品在线| 日本aⅴ精品一区二区三区| 亚洲免费观看高清在线观看| 精品电影一区二区三区| 欧美精三区欧美精三区 | 欧美韩国日本一区| 日韩一区二区三| 欧美自拍丝袜亚洲| 成人高清视频在线| 国产真实乱偷精品视频免| 日韩二区在线观看| 亚洲线精品一区二区三区八戒| 久久精品视频一区二区| 日韩美女一区二区三区| 欧美精品 日韩| 欧美在线观看一区| 一本一本大道香蕉久在线精品| 国产福利一区在线观看| 国内精品伊人久久久久影院对白| 亚洲第四色夜色| 亚洲一区av在线| 一区二区激情小说| 亚洲欧美偷拍三级| 亚洲欧美福利一区二区| 一区精品在线播放| 一色桃子久久精品亚洲| 国产精品第一页第二页第三页| 久久久一区二区三区| 久久久九九九九| 久久久久久久久久久黄色| 欧美精品一区二| 精品国产乱子伦一区| 精品久久久久久久久久久久包黑料 | 日韩午夜电影av| 日韩女优毛片在线| 精品国产青草久久久久福利| 日韩欧美视频在线| 26uuu欧美| 欧美国产成人精品| 综合激情成人伊人| 亚洲激情网站免费观看| 亚洲综合999| 三级久久三级久久久| 狠狠狠色丁香婷婷综合激情| 狠狠v欧美v日韩v亚洲ⅴ| 国产成人亚洲精品青草天美| 成人a免费在线看| 91黄色激情网站| 欧美日韩一级黄| 欧美草草影院在线视频| 麻豆91免费看| 欧美亚洲禁片免费| 91精品国产欧美一区二区成人 | 国产精品一区二区久激情瑜伽| 国产一区二区三区黄视频| 国产精品亚洲第一| 色域天天综合网| 欧美一区二区三区在线观看| 久久久久久久久一| 一区二区三区四区国产精品| 午夜电影网亚洲视频| 国产乱人伦偷精品视频免下载| 国产91在线|亚洲| 91国产成人在线| 精品999久久久| 亚洲女同ⅹxx女同tv| 男女激情视频一区| 成人性视频免费网站| 欧美猛男男办公室激情| 国产69精品久久777的优势| 日韩一级片网址| 美国欧美日韩国产在线播放| 欧美一区二区在线不卡| 欧美在线短视频| 91精品婷婷国产综合久久 | 亚洲欧美日韩国产中文在线|