MFC CSocket 在VS2010下 客户端只能接收一次服务器的返回信息,并且之后的代码不能执行

CSocket sock_client;
......
void Cftp_clientDlg::OnBnClickedconnect()
{
AfxSocketInit();
if(!sock_client.Create())
{
AfxMessageBox(_T("socket创建失败!"));
return;
}
UpdateData(true);

if(!sock_client.Connect(m_host,m_port))
{
AfxMessageBox(_T("socket连接服务器失败!"));
return;
}
MySockRecv();
CString send_msg;
send_msg = "USER ";
send_msg += m_name;
send_msg += "\r\n";
MySockSend(send_msg);
MySockRecv();
send_msg = "PASS ";
send_msg += m_password;
send_msg += "\r\n";
MySockSend(send_msg);
MySockRecv();

void Cftp_clientDlg::MySockRecv()
{
char buf_recv[200] = "";
if(SOCKET_ERROR == sock_client.Receive(buf_recv,199))
{
AfxMessageBox(_T("数据接收失败!"));
return;
}
CString show_msg("响应:");
show_msg += buf_recv;
m_listbox.AddString(show_msg);
}
void Cftp_clientDlg::MySockSend(CString send_msg)
{
if(SOCKET_ERROR == sock_client.Send(send_msg,send_msg.GetLength()))
{
AfxMessageBox(_T("数据发送失败!"));
return;
}
CString show_msg("命令:");
show_msg += send_msg;
m_listbox.AddString(show_msg);
}图片说明

1个回答

请继承CSocket重写OnReceived();方法,这个就是有消息来即调用,在里面调用received(~~);方法即获取数据!!!

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!