江湖救急:有同情心的老大快进来看看,一定给分

ybudi 2001-07-23 09:48:32
我要在两台机器之间通信,使用的是CSocket类关键代码如下:
BOOL CReDlg::OnInitDialog()
{
CDialog::OnInitDialog();
m_sockRecv.Create(6810,SOCK_DGRAM,"127.0.0.1");
m_sockRecv.Bind(6810,"127.0.0.1");
//建立Socket和绑定IP
.
.
.
}


void CReDlg::OnButton1()
{
char szRecv[20];
CString szIP("127.0.0.1");
UINT uPort=6811;
int iRecv =m_sockRecv.ReceiveFrom(szRecv,10,szIP,uPort,0);
int e=m_sockRecv.GetLastError();
TRACE("/n%d,%d/n",e,iRecv);
m_szRecv=szRecv;
UpdateData(FALSE);

}
CSocket m_sockRecv;是在其他类中声明,然后include进来的.
int e=m_sockRecv.GetLastError();得到的错误码是10093
这是接收端代码,发送端与它基本相同,但是无法进行通信,不知道为什么,希望各路英豪能够指点一二,小弟在这里先谢过了!
还有一件事,错误码含义在那里能够查到.










...全文
107 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
red_eyes 2001-07-23
  • 打赏
  • 举报
回复
在msdn索引里输入Error Codes,在最后的一个题目里,就是系统的错误代码。
red_eyes 2001-07-23
  • 打赏
  • 举报
回复
socket的过程是先绑定,然后监听。如果客户端有数据发送到服务器,就会出发receive事件。单步执行,看看,有没有建立连接,如果建立连接,客户端就会发数据。发过后,服务器开始接收。就是这个过程。。
ybudi 2001-07-23
  • 打赏
  • 举报
回复
感谢诸位,我再试试
to wwtfisher(米):
问一下,你是怎么查到10093的错误含义的,谢谢
vcsongs 2001-07-23
  • 打赏
  • 举报
回复
to ybudi:
两个类的使用方法可是很不一样的.
一般是派生新类. 重载OnReceive()...
wwtfisher 2001-07-23
  • 打赏
  • 举报
回复
10093是由于socket的版本问题引起来的,你在调用任何有关socket的函数前,先调一下WSAStartup(),不过记得程序推出之前要调用WSACleanup()
ybudi 2001-07-23
  • 打赏
  • 举报
回复
to : roland_c(凤凰) 
首先对你的帮助表示感谢,CSocket是CAsnycSocket的派生类,他们的用法基本是一样的,我想问一下,接收是不是要等待发送过来的数据.还有你说的等待事件通知是怎么做的
flytsu 2001-07-23
  • 打赏
  • 举报
回复
查查msdn吧,老兄。;-)
roland_c 2001-07-23
  • 打赏
  • 举报
回复
这个类我没有用过,不过根据我用SDK设计的经验,这时没有数据发过来,所以接收不会成功,你可以试试用CAsnycSocket类,然后等待事件通知。
错误代码可以用Visual Studio中的实用程序Error Lookup查。
zjlxl 2001-07-23
  • 打赏
  • 举报
回复
哈哈,你看以下直接使用
1、服务器
m_server= new CMySocket; //CMySocket 重载CSocket;
m_server->m_state=1;
m_server->m_netbar=this;
if (!m_server->Create(5001))
{
AfxMessageBox("服务器端套接字创建失败!");
return;
}
m_server->Listen();
2.客户

m_client=new CMySocket;
if(!m_client->Create())
{
MessageBox("ReceiveSocket create failed!","Receive",MB_ICONSTOP);
return;
}
else
{
if (!m_client->Connect("210.91.21.34",5001))
{
MessageBox("ReceiveSocket connect failed!","connect",MB_ICONSTOP);
m_client->m_state=1;//connect
return;
}
else
{ m_client->m_netbar=this;
MessageBox("ReceiveSocket connect OK!","connect",MB_ICONSTOP);
}
// UpdateData(FALSE);
}

3、你需要重载,CSocket 的Accetp, onreceive ,等事件
祝你好运:)........

16,467

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Web++
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

试试用AI创作助手写篇文章吧