急请:关于网络连接的几个小问题
急请高手指点:关于网络连接的几个问题
环境:同一台机器上实现CS模式的网络连接
问题:
1、试图配置Client端的主机IP和端口号,但是执行以下语句后(执行正常),m_ServerIP、m_ServerPort均未被赋值,试图用QuickWatch查看serip,serport,m_ServerIP,m_ServerPort的值,提出来示为“cxx0017,symbol not found”,或者是“cannot display value”,运行代码如下:
void CDlgServerPara::OnBtnYes()
{
CString serip = " ";
CString serport = " ";
GetDlgItem(IDC_EDIT_SERIP)-> GetWindowText(serip);
GetDlgItem(IDC_EDIT_SERPORT)-> GetWindowText(serport);
((CNClientApp *)AfxGetApp())-> m_ServerIP = serip;
((CNClientApp *)AfxGetApp())-> m_ServerPort = atoi(serport);
CDialog::OnOK();
}
2、上一步不行,于是我打算直接给m_ServerIP、m_ServerPort赋值,检验能否正常连接Server,相关函数如下:
void CDlgLogin::OnBtnLogin()
{
if(!((CNClientApp *)AfxGetApp())-> m_IsConnect){
if(!((CNClientApp *)AfxGetApp())-> ToConnect()){ ////ToConnect()
//函数在后面
MessageBox( "连接失败! ");
return;
}
}
CString strCode = " ";
CString strName = " ";
GetDlgItem(IDC_EDIT_LCODE)-> GetWindowText(strCode);
GetDlgItem(IDC_EDIT_LNAME)-> GetWindowText(strName);
if(strlen(strCode) <= 0 || strlen(strName) <= 0){
MessageBox( "用户编号和用户名称不能为空! ");
return;
}
CString nData = " ";
nData.Format( "ChkUser#%s#%s# ",strCode,strName);
((CNClientApp *)AfxGetApp())-> m_socket-> SendData(nData);
GetDlgItem(IDC_BTN_LOGIN)-> EnableWindow(false);
GetDlgItem(IDC_BTN_REGISTER)-> EnableWindow(false);
GetDlgItem(IDC_BTN_CONFIG)-> EnableWindow(false);
((CNClientApp *)AfxGetApp())-> m_status = REQ_CHKUSER;
((CNClientApp *)AfxGetApp())-> m_strLastMsg = " ";
m_bStartLogin = true;
((CNClientApp *)AfxGetApp())-> m_strUserCode = strCode;
((CNClientApp *)AfxGetApp())-> m_strUserName = strName;
SetTimer(1002,1000,NULL);
// CDialog::OnOK();
}
//
bool CNClientApp::ToConnect()
{
//String m_ServerIP1;
//m_ServerIP1= "192.168.0.15 ";
if(m_IsConnect)
return true;
//!!!!!!!!试图在这里赋值给m_ServerIP(类型:CString)
m_ServerIP= "192.168.0.15 ";
//m_ServerPort=122;
//
while(!m_socket-> Connect(m_ServerIP,m_ServerPort))
{
//连接应用服务器失败,询、问用户是否要重新连接,如果用户回答“是”,则再尝试重新连接FSS服务器
//如果用户回答“否”,则返回该方法,连接FSS服务器失败
if(AfxMessageBox( "是否重新连接? ",MB_YESNO)==IDNO)
{
return false;//
}
}
m_IsConnect = true;
return true;
}
在!!!!处赋值给m_ServerIP及m_ServerPort之后,m_ServerPort值为122,但是m_ServerIP值在QuickWatch窗口中依旧显示为cannot display value,连接也失败
环境:同一台机器上实现CS模式的网络连接
问题:
1、试图配置Client端的主机IP和端口号,但是执行以下语句后(执行正常),m_ServerIP、m_ServerPort均未被赋值,试图用QuickWatch查看serip,serport,m_ServerIP,m_ServerPort的值,提出来示为“cxx0017,symbol not found”,或者是“cannot display value”,运行代码如下:
void CDlgServerPara::OnBtnYes()
{
CString serip = " ";
CString serport = " ";
GetDlgItem(IDC_EDIT_SERIP)-> GetWindowText(serip);
GetDlgItem(IDC_EDIT_SERPORT)-> GetWindowText(serport);
((CNClientApp *)AfxGetApp())-> m_ServerIP = serip;
((CNClientApp *)AfxGetApp())-> m_ServerPort = atoi(serport);
CDialog::OnOK();
}
2、上一步不行,于是我打算直接给m_ServerIP、m_ServerPort赋值,检验能否正常连接Server,相关函数如下:
void CDlgLogin::OnBtnLogin()
{
if(!((CNClientApp *)AfxGetApp())-> m_IsConnect){
if(!((CNClientApp *)AfxGetApp())-> ToConnect()){ ////ToConnect()
//函数在后面
MessageBox( "连接失败! ");
return;
}
}
CString strCode = " ";
CString strName = " ";
GetDlgItem(IDC_EDIT_LCODE)-> GetWindowText(strCode);
GetDlgItem(IDC_EDIT_LNAME)-> GetWindowText(strName);
if(strlen(strCode) <= 0 || strlen(strName) <= 0){
MessageBox( "用户编号和用户名称不能为空! ");
return;
}
CString nData = " ";
nData.Format( "ChkUser#%s#%s# ",strCode,strName);
((CNClientApp *)AfxGetApp())-> m_socket-> SendData(nData);
GetDlgItem(IDC_BTN_LOGIN)-> EnableWindow(false);
GetDlgItem(IDC_BTN_REGISTER)-> EnableWindow(false);
GetDlgItem(IDC_BTN_CONFIG)-> EnableWindow(false);
((CNClientApp *)AfxGetApp())-> m_status = REQ_CHKUSER;
((CNClientApp *)AfxGetApp())-> m_strLastMsg = " ";
m_bStartLogin = true;
((CNClientApp *)AfxGetApp())-> m_strUserCode = strCode;
((CNClientApp *)AfxGetApp())-> m_strUserName = strName;
SetTimer(1002,1000,NULL);
// CDialog::OnOK();
}
//
bool CNClientApp::ToConnect()
{
//String m_ServerIP1;
//m_ServerIP1= "192.168.0.15 ";
if(m_IsConnect)
return true;
//!!!!!!!!试图在这里赋值给m_ServerIP(类型:CString)
m_ServerIP= "192.168.0.15 ";
//m_ServerPort=122;
//
while(!m_socket-> Connect(m_ServerIP,m_ServerPort))
{
//连接应用服务器失败,询、问用户是否要重新连接,如果用户回答“是”,则再尝试重新连接FSS服务器
//如果用户回答“否”,则返回该方法,连接FSS服务器失败
if(AfxMessageBox( "是否重新连接? ",MB_YESNO)==IDNO)
{
return false;//
}
}
m_IsConnect = true;
return true;
}
在!!!!处赋值给m_ServerIP及m_ServerPort之后,m_ServerPort值为122,但是m_ServerIP值在QuickWatch窗口中依旧显示为cannot display value,连接也失败