sendto 是否成功???

a_stupid_boy 2003-08-26 08:50:51
void CMS_simulateDoc::SendCmd(smg::CCommand &cmd)
{
BYTE sndBuf[4096];

strcpy(cmd.m_body.cmdDeliver.szPwd,m_szPwd ) ; //add by blueocean 2003/08/20

int sndlen = cmd.Encode( sndBuf );


UINT sendByte = m_pSocket->SendTo(sndBuf,sndlen,m_Port,m_Server);

/*
int nError =GetLastError() ;
CString str ;
str.Format("%d",nError) ;
AfxMessageBox( str ) ;
*/
if(sendByte <= 0)
{
CString info ;
UINT errorCode = GetLastError();
info.Format("不能发送到%s : %d,错误代码%d",m_Server,m_Port,errorCode);
UpdateInfo(info);
}
}

以上代码在服务端ip或port不正确时sendto的返回值都是正确的值,用GetLastError()返回的值也为0,有没有别的办法判断是否对方已正确收到信息
...全文
82 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
prettywolf 2003-08-31
  • 打赏
  • 举报
回复
要对方验证吧。
sevencat 2003-08-28
  • 打赏
  • 举报
回复
sendto仅仅是COPY到套接字缓冲区里面去,然后朝网卡上一丢,什么事情也不管.
flinming 2003-08-28
  • 打赏
  • 举报
回复
SendTo
返回值大于0就是发送成功
sevencat 2003-08-28
  • 打赏
  • 举报
回复
没法判断,除非你先BIND一下,但这样也不能确保,BIND只能保证假如你发送的对方端口和机器不存在的返回。
换句话说,假如你BIND,然后再SEND。只要对方机器上这个UDP套接口开着的,就会返回成功了(出错其实是一个ICMP信文包的返回)
schuyler 2003-08-28
  • 打赏
  • 举报
回复
怎么判断是否接收成功了呢。我在接收时WSAGetlasterror总是有错10014,是什么原因
xiaohyy 2003-08-27
  • 打赏
  • 举报
回复
如果没有返回SOCKET_ERROR就表示发送成功,至于对方是否受到则需要返回一个受到信息

mme 2003-08-27
  • 打赏
  • 举报
回复
没有什么方法的,除非对方又发一个包回来说:"我收到了".

18,356

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 网络编程
c++c语言开发语言 技术论坛(原bbs)
社区管理员
  • 网络编程
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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