项目中的用到了CAysncSocket这个类,进行了封装了。代码是别人写的。这个类是异步类,connect后,不能根据返回值来进行判断, 功能:点击连接按钮, 套接字去连接服务器,连接成功就发送一个认证包给服务器。//已经定下来了,是客户端发送认证给服务器
由于不知道何时连接成功。 导致不知道何时发送。所以项目中做了一个很二的做法:void CXXDialog::OnBtnConnect()
{mysocket.connect(..);
//创建接受数据线程
//创建其他线程
}
//多次设置断点,发现,只要连接后,这个函数被触发
void CMysocket::OnSend(int nErrcode)
{
m_pDlg->OnSend(int nErrcode);}void CXXDialog::OnSend(int nErrcode)
{mysocket.send(,,); 发送一个认证包给服务器}
1.如何判断是否成功连接
2.何时创建接受数据线程
由于不知道何时连接成功。 导致不知道何时发送。所以项目中做了一个很二的做法:void CXXDialog::OnBtnConnect()
{mysocket.connect(..);
//创建接受数据线程
//创建其他线程
}
//多次设置断点,发现,只要连接后,这个函数被触发
void CMysocket::OnSend(int nErrcode)
{
m_pDlg->OnSend(int nErrcode);}void CXXDialog::OnSend(int nErrcode)
{mysocket.send(,,); 发送一个认证包给服务器}
1.如何判断是否成功连接
2.何时创建接受数据线程
解决方案 »
- VPN L2TP的"pre-shared key"如何设置??
- 钢铁洪流”于下周三(2009-12-23)中午开放
- 高分求解:oracle 10g中, 用RFX_LongBinary函数读取blob数据异常
- 大三了!
- IMPLEMENT_SERIAL 展开后的 困惑 ;高手帮帮我,小弟先谢了
- 问一个关于分辨率的问题!
- 关于C1010错误的处理(不是没包含stdafx.h)
- 多文档,响应自己的按钮,打开一个FormView视图,但是为什么单击上面的button没相应?急!!!!
- 请问代理服务器的设计思路(高分)
- 大家都来看看啊 小鸟求救
- 新手打听下VCMFC开发人员会使用第三方界面库来缩短VC界面开发的时间啊?
- 为什么《精通Visual c++.Net图像处理编程》里面的方法还是用MFC编的呀?
// TODO: Add your control notification handler code here
if (0 == m_Conn.Connect("127.0.0.1",1500))
{
GetDlgItem(IDC_BTN_CONNECT)->EnableWindow(FALSE);
GetDlgItem(IDC_BTN_SEND)->EnableWindow(TRUE); GetDlgItem(IDC_BTN_CLOSE)->EnableWindow(TRUE);
}
这种法子是错误的,无法正确获得不过意外的是,我找了正确的方法了void CClientSock::OnConnect(int nErrorCode)
{
// TODO: Add your specialized code here and/or call the base class
if (0 == nErrorCode)
{
m_pDlg->OnConnected(); //可以这对话框类的这个函数创建线程
//根据nErroCode来判断是否连接成功
}
CAsyncSocket::OnConnect(nErrorCode);
int i=2;
i++;
}
void CClientSock::OnSend(int nErrorCode)
{
MessageBox(NULL,"xx","yy",MB_OK);
}当连接后,客户端会触发OnConnect 然后进入OnSend
// TODO: Add extra initialization here
m_Conn.SetDlg(this);
if (m_Conn.Create())
{
}
else
{
MessageBox("创建Socket失败!");
}
GetDlgItem(IDC_BTN_CLOSE)->EnableWindow(FALSE);
GetDlgItem(IDC_BTN_SEND)->EnableWindow(FALSE);
return TRUE; // return TRUE unless you set the focus to a control
}
默认tcp
给你个解决办法,在m_ClientSocket的类的OnConnect()事件中处理你连接问题:在OnConnect事件中,你可以知道连接是成功还是失败,然后在处理。
http://topic.csdn.net/t/20030829/08/2200488.html
第5楼
2: onsend 表明套接字可以发送数据了。
都表明你连接成功了。
AysncSelect成员函数设置后,
主动发送消息,那么 onsend也会触发。
接受线程,应该在 onconnnect中创建,