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

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

?? multicast.cpp

?? 利用UDP實現語音全雙工通信&利用winsock2實現IP多播的實例
?? CPP
字號:
// MultiCast.cpp: implementation of the CMultiCast class.
//
//////////////////////////////////////////////////////////////////////

#include "stdafx.h"
#include "MultiCastChat.h"
#include "MultiCast.h"

#ifdef _DEBUG
#undef THIS_FILE
static char THIS_FILE[]=__FILE__;
#define new DEBUG_NEW
#endif

//////////////////////////////////////////////////////////////////////
// Construction/Destruction
//////////////////////////////////////////////////////////////////////

CMultiCast::CMultiCast()
{
	m_hWnd = NULL;
	m_bConnected = FALSE;
}

CMultiCast::~CMultiCast()
{

}

BOOL CMultiCast::Create(CString lpstrAddr, unsigned short port, HWND hWnd)
{
	if(m_bConnected){
		TRACE("Has Successfully Create the socket!\n");
		return FALSE;
	}
	m_hWnd = hWnd;
	int ret;

    // 將字符串地址轉換為套接字地址
	int iLen = 0;
	int cbRet = 0;
	int nIP_TTL = 16;//設置IP數據生存期
	BOOL bFlag;
	iLen = sizeof(addr);

	m_hSocket = WSASocket(AF_INET, SOCK_DGRAM, 0, NULL, 0, 
		WSA_FLAG_OVERLAPPED | WSA_FLAG_MULTIPOINT_C_LEAF | WSA_FLAG_MULTIPOINT_D_LEAF);
	if (m_hSocket == INVALID_SOCKET){
		TRACE("WSASocket:%d\n",WSAGetLastError());
		return FALSE;
    } 

	bFlag = TRUE; // 設置套接字為可重用端口地址
	ret = setsockopt(m_hSocket,	SOL_SOCKET,	SO_REUSEADDR, (char *)&bFlag,
				sizeof (bFlag)); 

	if(ret == SOCKET_ERROR){
		TRACE("setsockopt:%d",WSAGetLastError());
		return FALSE;
    } 
    // 將套接字綁扎到用戶指定端口及默認的接口
    addr.sin_family = PF_INET;
    addr.sin_port = htons (port);
    addr.sin_addr.s_addr = INADDR_ANY;
	ret = bind (m_hSocket, (struct sockaddr FAR *)&addr, 
		sizeof(struct sockaddr));

    if (ret == SOCKET_ERROR){
		TRACE("bind: %d", WSAGetLastError());
		return FALSE;
    }
    // 設置多址廣播數據報傳播范圍(TTL)
	ret = WSAIoctl(m_hSocket, SIO_MULTICAST_SCOPE, &nIP_TTL, 
		sizeof (nIP_TTL), NULL, 0, (unsigned long*)&cbRet, NULL, NULL);           		 
    if (ret == SOCKET_ERROR){
		TRACE("SAIoctl(SIO_MULTICAST_SCOPE):%d\n",WSAGetLastError());
		return FALSE;
	}
			
	char* chAddr = lpstrAddr.GetBuffer(0);
	ret = WSAStringToAddress(chAddr, AF_INET, 
		NULL, (LPSOCKADDR)&addr, &iLen);          		
	if(ret == SOCKET_ERROR){
		m_bConnected = FALSE;
		TRACE("WSAStringToAddress:%d\n",WSAGetLastError());
		return FALSE;
	}

	srcaddr = addr;
	srcaddr.sin_port = htons (port);
	WSABUF wsaCalleeData;
	m_hGroupSocket = WSAJoinLeaf(m_hSocket,	(PSOCKADDR)&addr,	
		sizeof(addr), NULL, &wsaCalleeData, NULL, NULL, JL_BOTH);				 

    if (m_hGroupSocket == INVALID_SOCKET){
		m_bConnected = FALSE;
		TRACE("WSAJoinLeaf():%d\n", WSAGetLastError());
		return FALSE;
    }
	ret = WSAAsyncSelect(m_hGroupSocket, m_hWnd, WM_MULTIPOINTEVENT, 
		FD_WRITE | FD_READ | FD_QOS | FD_GROUP_QOS | FD_CONNECT);

	if(ret == SOCKET_ERROR){
		TRACE("WSAAsyncSelect():%d\n", WSAGetLastError());
		m_bConnected = FALSE;
		return FALSE;
	}
	m_bConnected = TRUE;
	return TRUE;
}

int CMultiCast::Send(char *lpData, int size)
{
	if(m_hSocket == INVALID_SOCKET)
		return -1;
	unsigned long nDataSent = 0;
	int nReturnCode;
	WSABUF wsaBuf;
	wsaBuf.len = size;
	wsaBuf.buf = lpData;
	nReturnCode = WSASendTo(m_hSocket, &wsaBuf, 1, &nDataSent, 
			0, (LPSOCKADDR)&srcaddr, sizeof(SOCKADDR), NULL, NULL);
	if(nReturnCode == SOCKET_ERROR){
		TRACE0("Error in send packets to the network!\n");
		return -1;
	}
	
	return nDataSent;
}

int CMultiCast::Receive(char *lpData, int size)
{
	int nReturnCode ;
	WSABUF wsaRecvBuf;
	wsaRecvBuf.buf = lpData;
	wsaRecvBuf.len = size;
	unsigned long cbRet = 0;

	int	iLen = sizeof (srcaddr);
	int	dFlag = 0;
	
	nReturnCode = WSARecvFrom(m_hGroupSocket, &wsaRecvBuf, 1,
		&cbRet, (unsigned long*)&dFlag, (struct sockaddr *)&srcaddr,
		&iLen, NULL, NULL); 
	if(nReturnCode == SOCKET_ERROR){
		if(WSAEWOULDBLOCK == WSAGetLastError())
			TRACE("Socket will block!\n");
		else{
			if(WSAGetLastError() == WSA_IO_PENDING)
				TRACE("IO is pending!\n");
			else
				return -1;
		}
		TRACE("RecvFrom Error:%d\n", WSAGetLastError());
	}
	//本次操作沒有接收到數據
	if(cbRet == 0)
		return 0;

	//通知父窗口讀數據
	return cbRet;
}

void CMultiCast::Initilize()
{
	WSADATA wsaData;
	WORD version = MAKEWORD(2, 0);
	int ret = WSAStartup(version, &wsaData);
	if(ret != 0)
		TRACE("Initilize Error!\n");
}

void CMultiCast::Unintilize()
{
	if (WSACleanup() != 0){
		TRACE("UnInitilize Error:%d\n", WSAGetLastError());
	}
}

BOOL CMultiCast::IsConnected()
{
	return m_bConnected;
}

void CMultiCast::Close()
{
	closesocket(m_hSocket);
	closesocket(m_hGroupSocket);
	m_bConnected = FALSE;
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美视频一区二区在线观看| 久久se这里有精品| 久久久久国产精品免费免费搜索| 欧美精品日韩精品| 欧美吻胸吃奶大尺度电影 | 亚洲线精品一区二区三区八戒| 国产亚洲福利社区一区| 欧美精品一区二区三区蜜臀| 精品国产一区久久| 精品成人一区二区| 国产欧美一区二区在线| 国产精品美女久久福利网站 | 国产91高潮流白浆在线麻豆| 国产精品一区免费在线观看| 国产精品888| 97精品久久久午夜一区二区三区| 色综合久久综合中文综合网| 色婷婷综合五月| 欧美美女喷水视频| 日韩免费看网站| 国产农村妇女精品| 亚洲精品国产视频| 日韩精品色哟哟| 激情六月婷婷久久| 99re66热这里只有精品3直播| 91电影在线观看| 欧美成人女星排名| 亚洲欧洲www| 日韩精品91亚洲二区在线观看| 久久不见久久见免费视频1| 国产91精品在线观看| 欧美做爰猛烈大尺度电影无法无天| 欧美日韩免费不卡视频一区二区三区 | 欧美性感一区二区三区| 日韩精品一区二区在线观看| 国产精品美女一区二区三区 | 日韩欧美亚洲国产另类| 国产欧美精品区一区二区三区 | 久久久久久久久久久久久女国产乱 | 亚洲亚洲人成综合网络| 久久99国产精品久久| 91免费观看在线| 精品久久久久久久人人人人传媒 | 五月婷婷久久丁香| 国产麻豆精品theporn| 欧美无砖砖区免费| 中文字幕巨乱亚洲| 免费看黄色91| 欧美亚洲另类激情小说| 国产精品色哟哟| 久久精品二区亚洲w码| 色狠狠色狠狠综合| 国产免费成人在线视频| 免费成人结看片| 欧美性色黄大片| 亚洲理论在线观看| 国产福利电影一区二区三区| 4438x成人网最大色成网站| 最近日韩中文字幕| 国产v综合v亚洲欧| 欧美精品一区二区高清在线观看| 一二三区精品视频| 99在线精品视频| 中文字幕av一区二区三区| 蜜桃视频在线观看一区| 欧美日韩亚州综合| 夜夜嗨av一区二区三区网页| 91丨porny丨首页| 国产精品美女久久久久久久网站| 精品亚洲国内自在自线福利| 欧美精品在线视频| 五月婷婷欧美视频| 欧美男男青年gay1069videost| 亚洲乱码国产乱码精品精的特点 | 欧美在线综合视频| 亚洲柠檬福利资源导航| 成人av在线网| 亚洲欧洲av在线| 色综合久久久久久久| 亚洲色图自拍偷拍美腿丝袜制服诱惑麻豆| 国内成人免费视频| 欧美国产精品专区| 成人免费毛片高清视频| 亚洲欧洲精品天堂一级| 在线免费不卡视频| 亚洲成人黄色影院| 欧美一区二区三区免费观看视频 | 国产欧美精品在线观看| 国产成人免费网站| 一区在线播放视频| 欧美日韩在线观看一区二区 | 精品一区二区三区在线观看| 欧美电视剧免费全集观看| 精品一区二区成人精品| 日本一区二区视频在线| 本田岬高潮一区二区三区| 亚洲精品欧美二区三区中文字幕| 欧洲精品一区二区| 激情成人综合网| 国产精品理论片| 欧美日韩不卡视频| 国产真实乱子伦精品视频| 亚洲欧美综合网| 欧美一区二区三区免费在线看| 国产伦精品一区二区三区在线观看| 亚洲国产激情av| 欧美日韩五月天| 国产一区二区视频在线播放| 亚洲人吸女人奶水| 日韩一级片在线播放| 成人av免费在线观看| 视频一区中文字幕| 中文字幕二三区不卡| 欧美女孩性生活视频| 东方欧美亚洲色图在线| 丝袜亚洲另类欧美综合| 日本一区二区三区四区在线视频| 欧美性大战久久久久久久| 国产一区二区三区电影在线观看 | 欧美日韩精品系列| 成人高清免费观看| 日韩精品一二三区| 亚洲欧美日韩久久| 欧美韩国日本一区| 日韩免费观看高清完整版| 色综合激情五月| 国产成人午夜精品5599| 青青国产91久久久久久| 一区二区三区不卡在线观看| 欧美精品一区二区三区在线 | 日韩欧美一区二区不卡| 91视频com| 成人国产在线观看| 久久国产精品第一页| 亚洲成a人在线观看| 国产精品的网站| 国产日韩精品一区| 久久天天做天天爱综合色| 欧美日韩精品福利| 在线国产亚洲欧美| 99re这里都是精品| 99精品国产99久久久久久白柏| 国产成人在线免费观看| 99在线视频精品| 国产精品一级在线| 九九精品视频在线看| 美女网站色91| 日日夜夜精品视频天天综合网| 亚洲精品亚洲人成人网在线播放| 国产精品毛片久久久久久久| 国产午夜亚洲精品不卡| 国产亚洲制服色| 久久久久久久久蜜桃| 久久久夜色精品亚洲| 久久久亚洲综合| 久久久天堂av| 久久久久久久久久久99999| 日韩三级av在线播放| 日韩欧美国产精品| 亚洲精品一区在线观看| 亚洲精品在线观看视频| 久久日韩粉嫩一区二区三区| 国产女同性恋一区二区| 国产精品久久久久久一区二区三区| 国产拍揄自揄精品视频麻豆| 国产精品视频九色porn| 国产精品你懂的| 一区二区三区不卡视频| 日日骚欧美日韩| 精品夜夜嗨av一区二区三区| 国产不卡在线一区| fc2成人免费人成在线观看播放| a美女胸又www黄视频久久| 91传媒视频在线播放| 日韩精品一区二区三区在线播放 | 国产成人无遮挡在线视频| 成人丝袜高跟foot| 91福利国产成人精品照片| 91精品麻豆日日躁夜夜躁| 久久综合成人精品亚洲另类欧美| 久久久国产精华| 一区二区三区日韩| 免费视频最近日韩| 国产99久久久国产精品免费看| 91丨porny丨户外露出| 91麻豆精品国产自产在线观看一区 | 91丨九色丨蝌蚪丨老版| 欧美日产国产精品| 久久精品亚洲国产奇米99| 一区二区三区不卡视频在线观看 | 国产精品系列在线| 一区二区三区在线播放| 久久精品国产网站| 91麻豆精品秘密| 欧美mv和日韩mv的网站| 一区二区三区产品免费精品久久75| 另类小说图片综合网| 色婷婷综合久色| 国产日韩精品一区| 免费观看成人鲁鲁鲁鲁鲁视频|