通讯开始连接时出现装载
WINSOK 。DLL错误。
其它多个*。DLL 错误。。
为什么。
是以无根形式加入的
但是总不能加入多播组。是不是系统的问题呀。
晕死
解决方案 »
- 用什么储存大量文件信息比较好
- 老问题,CAB里的OCX自动更新问题!
- 为什么应用了codejock的界面库以后应用程序最小化后无法还原
- 内存位图有最大值么?
- 心情好,散分,散分~~~~~~~
- release版程序出错(打开view时MFC42.dll出错,而在debug版正常)!
- 如何用VC枚举word文档窗口
- 求助:怎么改对话框上的静态文本的字体颜色?
- VC6中邪了。。55555
- 关于DoDataExchange()
- 本人初学C++,请问:像这样的构造函数CMyView::CMyView():m_rectEllipse(0,0,200,200){...}中怎么用":"来初始化对象?
- vc怎样调用存储过程?
是什么问题。
是不是加入多播组时加入的地址有问题。
在加入多播时个WSAJoinLeaf()出现问题/
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);
出错啦--------------》》m_hGroupSocket = WSAJoinLeaf(m_hSocket, (LPSOCKADDR)&addr,
sizeof(addr), NULL,NULL, NULL, NULL, JL_BOTH); if (m_hGroupSocket == INVALID_SOCKET){
m_bConnected = FALSE;
AfxMessageBox("null");
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;
}