swomfs 2017-04-19 13:01 采纳率: 0%
浏览 1246

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(~~);方法即获取数据!!!

    评论

报告相同问题?

悬赏问题

  • ¥15 无线电能传输系统MATLAB仿真问题
  • ¥50 如何用脚本实现输入法的热键设置
  • ¥20 我想使用一些网络协议或者部分协议也行,主要想实现类似于traceroute的一定步长内的路由拓扑功能
  • ¥30 深度学习,前后端连接
  • ¥15 孟德尔随机化结果不一致
  • ¥15 apm2.8飞控罗盘bad health,加速度计校准失败
  • ¥15 求解O-S方程的特征值问题给出边界层布拉休斯平行流的中性曲线
  • ¥15 谁有desed数据集呀
  • ¥20 手写数字识别运行c仿真时,程序报错错误代码sim211-100
  • ¥15 关于#hadoop#的问题