www.pudn.com > gps-time.rar > DlgChgServer.cpp


// DlgChgServer.cpp : implementation file 
// 
 
#include "stdafx.h" 
#include "RegionComm.h" 
#include "RegionSocket.h" 
#include "DlgChgServer.h" 
#include "constant.h" 
 
#include "RegionCommDoc.h" 
 
#ifdef _DEBUG 
#define new DEBUG_NEW 
#undef THIS_FILE 
static char THIS_FILE[] = __FILE__; 
#endif 
 
///////////////////////////////////////////////////////////////////////////// 
// DlgChgServer dialog 
 
 
DlgChgServer::DlgChgServer(CWnd* pParent /*=NULL*/) 
	: CDialog(DlgChgServer::IDD, pParent) 
{ 
	//{{AFX_DATA_INIT(DlgChgServer) 
	m_iPortNo = 0; 
	m_sServerName = _T(""); 
 
	//}}AFX_DATA_INIT 
} 
 
 
void DlgChgServer::DoDataExchange(CDataExchange* pDX) 
{ 
	CDialog::DoDataExchange(pDX); 
	//{{AFX_DATA_MAP(DlgChgServer) 
	DDX_Control(pDX, IDC_IPADDRESS1, m_IP_C); 
	DDX_Text(pDX, IDC_PORTNO, m_iPortNo); 
	DDV_MinMaxUInt(pDX, m_iPortNo, 1024, 9999); 
	DDX_Text(pDX, IDC_SERVERNAME, m_sServerName); 
	DDV_MaxChars(pDX, m_sServerName, 50); 
	//}}AFX_DATA_MAP 
} 
 
 
BEGIN_MESSAGE_MAP(DlgChgServer, CDialog) 
	//{{AFX_MSG_MAP(DlgChgServer) 
	//}}AFX_MSG_MAP 
END_MESSAGE_MAP() 
 
///////////////////////////////////////////////////////////////////////////// 
// DlgChgServer message handlers 
 
BOOL DlgChgServer::OnInitDialog()  
{ 
	CDialog::OnInitDialog(); 
	 
	m_iPortNo = AfxGetApp()->GetProfileInt(CenterServerConfigName,_T("ServerSocketPort"),0); 
 
	m_sServerName=AfxGetApp()->GetProfileString(CenterServerConfigName,_T("ServerMachineName"),"");  
 
	m_sIPAddr = AfxGetApp()->GetProfileString(CenterServerConfigName,_T("ServerIPAddress"),""); 	 
	long  lIpAddr = inet_addr((LPCTSTR)m_sIPAddr); 
    long  lIpAddr2; //由于标准的inet_addr函数得到IP串表示和常规的相反,所以要颠倒字节  
    unsigned char *p1,*p2; 
	p1=(unsigned char*)(&lIpAddr); 
	p2=(unsigned char*)(&lIpAddr2); 
	for(char i=0;i<4;i++) 
		p2[i]=p1[3-i]; 
	if(lIpAddr!=INADDR_NONE) 
	   m_IP_C.SetAddress(lIpAddr2); 
	else 
		m_sIPAddr=""; 
    UpdateData(FALSE); 
	return TRUE;  // return TRUE unless you set the focus to a control 
	              // EXCEPTION: OCX Property Pages should return FALSE 
} 
 
void DlgChgServer::OnOK()  
{ 
    CRegionSocket * pSocket; 
    int ret = m_IP_C.GetAddress(m_iIP); 
 
	unsigned char *p1,*p2; 
	long lIpAddr2; 
 
	if(ret<4) 
		m_iIP = 0; 
	UpdateData(true); 
	m_sServerName.TrimLeft(); 
	m_sServerName.TrimRight(); 
	struct in_addr sAddr; 
	if(m_iIP) 
	{	   
	  p1=(unsigned char*)(&m_iIP); 
	  p2=(unsigned char*)(&lIpAddr2); 
	  for(char i=0;i<4;i++) 
		p2[i]=p1[3-i];  
	  sAddr.S_un.S_addr=lIpAddr2; 
	  m_sIPAddr=inet_ntoa(sAddr); 
	} 
	else 
		m_sIPAddr=""; 
	if(m_iIP == 0 && m_sServerName =="") 
	{ 
		::MessageBox(NULL,_T("请输入中心服务器名或IP地址"),_T("错误"),MB_OK); 
		return; 
	} 
	if(m_iPortNo == 0 ) 
	{ 
		::MessageBox(NULL,_T("请输入中心服务器端口号"),_T("错误"),MB_OK); 
		return; 
	}	 
 
    AfxGetApp()->WriteProfileString(CenterServerConfigName,_T("ServerMachineName"),m_sServerName); 
	AfxGetApp()->WriteProfileString(CenterServerConfigName,_T("ServerIPAddress"),m_sIPAddr);	 
	AfxGetApp()->WriteProfileInt(CenterServerConfigName,_T("ServerSocketPort"),m_iPortNo);	 
	 
	CRegionCommDoc * pDoc = (CRegionCommDoc *)m_pView->GetDocument(); 
	pSocket = pDoc->m_pCommunication->m_pServerSocket; 
	pSocket->UpdateProperty(m_sServerName,m_iPortNo,m_sIPAddr); 
	m_pView->SetListCtrlFormat(m_pView->m_itemOld.lParam);  
 
	CDialog::OnOK(); 
} 
 
void DlgChgServer::SetOwner(CRegionCommView *pView) 
{ 
	m_pView=pView; 
}