shimez
swomfs
采纳率0%
2017-04-19 13:01 阅读 1.2k

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条回答 默认 最新

  • what951006 小乌龟在大乌龟背上 2017-04-19 13:08

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

    点赞 评论 复制链接分享

相关推荐