| 1359 |
m_dlgTransfer.SetPluginList(m_PluginList.list); |
m_dlgTransfer.SetPluginList(m_PluginList.list); |
| 1360 |
m_PluginList.cs.Unlock(); |
m_PluginList.cs.Unlock(); |
| 1361 |
|
|
| 1362 |
m_dlgTransfer.SetTargetWnd(this); |
m_dlgTransfer.SetCallback(this); |
| 1363 |
m_dlgTransfer.DoModal(); |
m_dlgTransfer.DoModal(); |
| 1364 |
} |
} |
| 1365 |
else |
else |
| 1476 |
{ |
{ |
| 1477 |
CByteArray data; |
CByteArray data; |
| 1478 |
UDP_DATA uReply; |
UDP_DATA uReply; |
| 1479 |
SOCKADDR SockAddr; |
SOCKADDR sAddr; |
| 1480 |
int nLenSA = sizeof(SOCKADDR); |
int nLenSA = sizeof(SOCKADDR); |
| 1481 |
|
|
| 1482 |
ZeroMemory(&uReply, sizeof(uReply)); |
ZeroMemory(&uReply, sizeof(uReply)); |
| 1495 |
uReply.wSrcNodeID = m_wcsStatus.wNodeID; |
uReply.wSrcNodeID = m_wcsStatus.wNodeID; |
| 1496 |
uReply.wDstNodeID = WCS_DEFAULT_NODE_ID; |
uReply.wDstNodeID = WCS_DEFAULT_NODE_ID; |
| 1497 |
CopyMemory(data.GetData(), &uReply, data.GetSize()); |
CopyMemory(data.GetData(), &uReply, data.GetSize()); |
| 1498 |
MakeSockAddr(&SockAddr, NetAddr.dwAddress, NetAddr.wPort); |
MakeSockAddr(&sAddr, NetAddr.dwAddress, NetAddr.wPort); |
| 1499 |
m_pServerPeerSocket->SendTo(data, &SockAddr, nLenSA); |
m_pServerPeerSocket->SendTo(data, &sAddr, nLenSA); |
| 1500 |
break; |
break; |
| 1501 |
} |
} |
| 1502 |
} |
} |
| 2045 |
return wNodeID; |
return wNodeID; |
| 2046 |
} |
} |
| 2047 |
|
|
| 2048 |
DWORD CWinCSDlg::GetSAddrBySockAddr(const LPSOCKADDR lpSockAddr) |
DWORD CWinCSDlg::GetSAddrBySockAddr(const LPSOCKADDR lpsAddr) |
| 2049 |
{ |
{ |
| 2050 |
SOCKADDR_IN siAddr; |
SOCKADDR_IN sAddrIn; |
| 2051 |
CopyMemory(&siAddr, lpSockAddr, sizeof(siAddr)); |
CopyMemory(&sAddrIn, lpsAddr, sizeof(sAddrIn)); |
| 2052 |
return siAddr.sin_addr.s_addr; |
return sAddrIn.sin_addr.s_addr; |
| 2053 |
} |
} |
| 2054 |
|
|
| 2055 |
WORD CWinCSDlg::GetPortBySockAddr(const LPSOCKADDR lpSockAddr) |
WORD CWinCSDlg::GetPortBySockAddr(const LPSOCKADDR lpsAddr) |
| 2056 |
{ |
{ |
| 2057 |
SOCKADDR_IN siAddr; |
SOCKADDR_IN sAddrIn; |
| 2058 |
CopyMemory(&siAddr, lpSockAddr, sizeof(siAddr)); |
CopyMemory(&sAddrIn, lpsAddr, sizeof(sAddrIn)); |
| 2059 |
return ntohs(siAddr.sin_port); |
return ntohs(sAddrIn.sin_port); |
| 2060 |
} |
} |
| 2061 |
|
|
| 2062 |
////////////////////////////////////////////////////////////////////////// |
////////////////////////////////////////////////////////////////////////// |
| 2445 |
|
|
| 2446 |
BOOL CWinCSDlg::StartMaster() |
BOOL CWinCSDlg::StartMaster() |
| 2447 |
{ |
{ |
| 2448 |
SOCKADDR_IN siAddr; |
SOCKADDR_IN sAddrIn; |
| 2449 |
LOCALNET net; |
LOCALNET net; |
| 2450 |
SOCKMSG SockMsg; |
SOCKMSG SockMsg; |
| 2451 |
CString cs, csIP; |
CString cs, csIP; |
| 2452 |
int nLenSA = sizeof(SOCKADDR); |
int nLenSA = sizeof(SOCKADDR); |
| 2453 |
|
|
| 2454 |
if (SearchMaster((LPSOCKADDR)&siAddr, &nLenSA)) |
if (SearchMaster((LPSOCKADDR)&sAddrIn, &nLenSA)) |
| 2455 |
{ |
{ |
| 2456 |
cs.LoadString(IDS_WCS_ERROR_MASTER_DUPLICATED); |
cs.LoadString(IDS_WCS_ERROR_MASTER_DUPLICATED); |
| 2457 |
csIP.Format(_T("\r\nIP: %s"), DwToIPAddress(siAddr.sin_addr.s_addr)); |
csIP.Format(_T("\r\nIP: %s"), DwToIPAddress(sAddrIn.sin_addr.s_addr)); |
| 2458 |
cs += csIP; |
cs += csIP; |
| 2459 |
AfxMessageBox(cs); |
AfxMessageBox(cs); |
| 2460 |
return FALSE; |
return FALSE; |
| 2484 |
return FALSE; |
return FALSE; |
| 2485 |
} |
} |
| 2486 |
|
|
| 2487 |
SockMsg.pTgtObj = this; |
SockMsg.pCallback = this; |
| 2488 |
SockMsg.dwSocketID = WCS_SOCKID_STREAM_SERVER; |
SockMsg.dwSocketID = WCS_SOCKID_STREAM_SERVER; |
| 2489 |
|
|
| 2490 |
if (!m_pServerSocket->Initialize(SockMsg, m_wcsStatus.wTCPPort, m_wcsStatus.dwLocalAddress)) |
if (!m_pServerSocket->Initialize(SockMsg, m_wcsStatus.wTCPPort, m_wcsStatus.dwLocalAddress)) |
| 2512 |
|
|
| 2513 |
BOOL CWinCSDlg::StartSlave() |
BOOL CWinCSDlg::StartSlave() |
| 2514 |
{ |
{ |
| 2515 |
SOCKADDR_IN siAddr; |
SOCKADDR_IN sAddrIn; |
| 2516 |
LOCALNET net; |
LOCALNET net; |
| 2517 |
SOCKMSG SockMsg; |
SOCKMSG SockMsg; |
| 2518 |
CString cs, csIP; |
CString cs, csIP; |
| 2520 |
|
|
| 2521 |
if (m_wcsStatus.fDynamic) |
if (m_wcsStatus.fDynamic) |
| 2522 |
{ |
{ |
| 2523 |
if (!SearchMaster((LPSOCKADDR)&siAddr, &nLenSA)) |
if (!SearchMaster((LPSOCKADDR)&sAddrIn, &nLenSA)) |
| 2524 |
{ |
{ |
| 2525 |
// Master can't discover the network. |
// Master can't discover the network. |
| 2526 |
cs.LoadString(IDS_WCS_ERROR_MASTER_DISCOVERY); |
cs.LoadString(IDS_WCS_ERROR_MASTER_DISCOVERY); |
| 2529 |
} |
} |
| 2530 |
else |
else |
| 2531 |
{ |
{ |
| 2532 |
siAddr.sin_family = AF_INET; |
sAddrIn.sin_family = AF_INET; |
| 2533 |
siAddr.sin_port = htons(m_wcsStatus.wTCPPort); |
sAddrIn.sin_port = htons(m_wcsStatus.wTCPPort); |
| 2534 |
} |
} |
| 2535 |
} |
} |
| 2536 |
else |
else |
| 2537 |
{ |
{ |
| 2538 |
siAddr.sin_family = AF_INET; |
sAddrIn.sin_family = AF_INET; |
| 2539 |
siAddr.sin_port = htons(m_wcsStatus.wTCPPort); |
sAddrIn.sin_port = htons(m_wcsStatus.wTCPPort); |
| 2540 |
siAddr.sin_addr.s_addr = m_wcsStatus.dwMasterAddress; |
sAddrIn.sin_addr.s_addr = m_wcsStatus.dwMasterAddress; |
| 2541 |
} |
} |
| 2542 |
|
|
| 2543 |
// ClientSocket initialize |
// ClientSocket initialize |
| 2551 |
return FALSE; |
return FALSE; |
| 2552 |
} |
} |
| 2553 |
|
|
| 2554 |
SockMsg.pTgtObj = this; |
SockMsg.pCallback = this; |
| 2555 |
SockMsg.dwSocketID = WCS_SOCKID_STREAM_CLIENT; |
SockMsg.dwSocketID = WCS_SOCKID_STREAM_CLIENT; |
| 2556 |
|
|
| 2557 |
if (!m_pClientSocket->Initialize(SockMsg)) |
if (!m_pClientSocket->Initialize(SockMsg)) |
| 2559 |
return FALSE; |
return FALSE; |
| 2560 |
} |
} |
| 2561 |
|
|
| 2562 |
if (!ConnectMaster((LPSOCKADDR)&siAddr)) |
if (!ConnectMaster((LPSOCKADDR)&sAddrIn)) |
| 2563 |
{ |
{ |
| 2564 |
m_pClientBcastSocket->CloseSocket(); |
m_pClientBcastSocket->CloseSocket(); |
| 2565 |
m_pClientSocket->CloseSocket(); |
m_pClientSocket->CloseSocket(); |
| 2566 |
|
|
| 2567 |
cs.LoadString(IDS_WCS_ERROR_MASTER_CONNECT); |
cs.LoadString(IDS_WCS_ERROR_MASTER_CONNECT); |
| 2568 |
csIP.Format(_T("\r\nIP: %s"), DwToIPAddress(siAddr.sin_addr.s_addr)); |
csIP.Format(_T("\r\nIP: %s"), DwToIPAddress(sAddrIn.sin_addr.s_addr)); |
| 2569 |
cs += csIP; |
cs += csIP; |
| 2570 |
AfxMessageBox(cs); |
AfxMessageBox(cs); |
| 2571 |
return FALSE; |
return FALSE; |
| 2593 |
return FALSE; |
return FALSE; |
| 2594 |
} |
} |
| 2595 |
|
|
| 2596 |
m_wcsStatus.dwMasterAddress = siAddr.sin_addr.s_addr; |
m_wcsStatus.dwMasterAddress = sAddrIn.sin_addr.s_addr; |
| 2597 |
net.dwAddress = m_wcsStatus.dwLocalAddress; |
net.dwAddress = m_wcsStatus.dwLocalAddress; |
| 2598 |
net.dwMask = m_wcsStatus.dwMaskAddress; |
net.dwMask = m_wcsStatus.dwMaskAddress; |
| 2599 |
net.dwNet = (net.dwAddress & net.dwMask); |
net.dwNet = (net.dwAddress & net.dwMask); |
| 2655 |
return FALSE; |
return FALSE; |
| 2656 |
} |
} |
| 2657 |
|
|
| 2658 |
SockMsg.pTgtObj = this; |
SockMsg.pCallback = this; |
| 2659 |
SockMsg.dwSocketID = WCS_SOCKID_PEER_CLIENT; |
SockMsg.dwSocketID = WCS_SOCKID_PEER_CLIENT; |
| 2660 |
|
|
| 2661 |
if (!m_pClientBcastSocket->Initialize(SockMsg, m_wcsStatus.dwLocalAddress, m_wcsStatus.wUDPClientPort)) |
if (!m_pClientBcastSocket->Initialize(SockMsg, m_wcsStatus.dwLocalAddress, m_wcsStatus.wUDPClientPort)) |
| 2694 |
return FALSE; |
return FALSE; |
| 2695 |
} |
} |
| 2696 |
|
|
| 2697 |
SockMsg.pTgtObj = this; |
SockMsg.pCallback = this; |
| 2698 |
SockMsg.dwSocketID = WCS_SOCKID_PEER_SERVER; |
SockMsg.dwSocketID = WCS_SOCKID_PEER_SERVER; |
| 2699 |
|
|
| 2700 |
if (!m_pServerPeerSocket->Initialize(SockMsg, m_wcsStatus.dwLocalAddress, m_wcsStatus.wUDPServerPort)) |
if (!m_pServerPeerSocket->Initialize(SockMsg, m_wcsStatus.dwLocalAddress, m_wcsStatus.wUDPServerPort)) |
| 2917 |
return FALSE; |
return FALSE; |
| 2918 |
} |
} |
| 2919 |
|
|
| 2920 |
void CWinCSDlg::MakeSockAddr(LPSOCKADDR lpSockAddr, DWORD dwAddress, WORD wPort, int nAF) |
void CWinCSDlg::MakeSockAddr(LPSOCKADDR lpsAddr, DWORD dwAddress, WORD wPort, int nFamily) |
| 2921 |
{ |
{ |
| 2922 |
SOCKADDR_IN addr; |
SOCKADDR_IN addr; |
| 2923 |
addr.sin_port = htons(wPort); |
addr.sin_port = htons(wPort); |
| 2924 |
addr.sin_family = nAF; |
addr.sin_family = nFamily; |
| 2925 |
addr.sin_addr.s_addr = dwAddress; |
addr.sin_addr.s_addr = dwAddress; |
| 2926 |
CopyMemory(lpSockAddr, &addr, sizeof(SOCKADDR)); |
CopyMemory(lpsAddr, &addr, sizeof(SOCKADDR)); |
| 2927 |
} |
} |
| 2928 |
|
|
| 2929 |
void CWinCSDlg::MakeINetAddr(LPDWORD lpAddress, LPWORD lpPort, const LPSOCKADDR lpSockAddr) |
void CWinCSDlg::MakeINetAddr(LPDWORD lpAddress, LPWORD lpPort, const LPSOCKADDR lpsAddr) |
| 2930 |
{ |
{ |
| 2931 |
SOCKADDR_IN addr; |
SOCKADDR_IN addr; |
| 2932 |
CopyMemory(&addr, lpSockAddr, sizeof(addr)); |
CopyMemory(&addr, lpsAddr, sizeof(addr)); |
| 2933 |
*lpAddress = addr.sin_addr.s_addr; |
*lpAddress = addr.sin_addr.s_addr; |
| 2934 |
*lpPort = ntohs(addr.sin_port); |
*lpPort = ntohs(addr.sin_port); |
| 2935 |
} |
} |
| 2976 |
SaveSettings(_T("Retry"), m_wcsStatus.wRetry); |
SaveSettings(_T("Retry"), m_wcsStatus.wRetry); |
| 2977 |
} |
} |
| 2978 |
|
|
| 2979 |
BOOL CWinCSDlg::SearchMaster(LPSOCKADDR lpSockAddr, int *lpSockAddrLen) |
BOOL CWinCSDlg::SearchMaster(LPSOCKADDR lpsAddr, int *lpsAddrLen) |
| 2980 |
{ |
{ |
| 2981 |
CByteArray snd, rcv; |
CByteArray snd, rcv; |
| 2982 |
UDP_DATA uData; |
UDP_DATA uData; |
| 2995 |
return FALSE; |
return FALSE; |
| 2996 |
} |
} |
| 2997 |
|
|
| 2998 |
if (!m_pClientBcastSocket->ReceiveFrom(rcv, lpSockAddr, lpSockAddrLen)) |
if (!m_pClientBcastSocket->ReceiveFrom(rcv, lpsAddr, lpsAddrLen)) |
| 2999 |
{ |
{ |
| 3000 |
return FALSE; |
return FALSE; |
| 3001 |
} |
} |