关于NMUDP组件的异常问题

greenspan 2003-09-25 02:34:06
我用NMUDP组件在局域网中发送接受数据,一个主机服务程序,几个客户程序。
在用NMUDP发送数据时发现:RemoteHost和RemotePort属性对应的侦听程序没有
运行的话,发送程序调用SenderStream就出错,程序就退出了,我抓不到异常,要是能抓到就好了。如何确定网络中的另一个程序已经或没有在执行呢?
我在网络的方面编程经验比较少,请教各位了!
我的开发环境是CB5.

出错的程序
TForm1::btnSendData(TObject* Sender)
{
NMUDP1->RemoteHost="127.0.0.1";
NMUDP1->RemotePort=6668;
TMemoryStream* MyStream=TMemoryStream;
try{
TMyStruct{
int i;
}MyStruct;
MyStruct.i=10;

MyStream.Write(&MyStruct,sizeof(TMyStruct));
NMUDP1->SendStream(MyStream);
}
__finally{
delete MyStream;
}
}

如果没有将另外一个NMUDP(或同一个)的LocalPort设置为6668(发送的NMUDP的RemotePort)上面的方法在调用后出错。也就是说没有程序在侦听他就出错
...全文
59 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
greenspan 2003-09-30
  • 打赏
  • 举报
回复
sorry,我查到出错的地方了,不知道为什么,居然在对方没有打开的时候,
只要一发数据就会触发OnDataReceived事件,但是收到的数据长度为-1。
ljianq 2003-09-29
  • 打赏
  • 举报
回复
zihan(子寒)说的不错,还有:
MyStream.Write(&MyStruct,sizeof(TMyStruct));
应该是:MyStream->Write(&MyStruct,sizeof(TMyStruct));

将__finally改为catch(...)

__finally 不能捕获例外,执行完__finally后,例外仍然将抛出。
zihan 2003-09-28
  • 打赏
  • 举报
回复
不会吧,你看看程序出错的地方啊, UDP不是面向连接的哦,应该不会出错的。
你这句应该是
TMemoryStream* MyStream=TMemoryStream;该为
TMemoryStream* MyStream=new TMemoryStream;
xizhouhawk 2003-09-28
  • 打赏
  • 举报
回复
你的异常程序抱出异常的部分呢?
throw????

1,317

社区成员

发帖
与我相关
我的任务
社区描述
C++ Builder 网络及通讯开发
社区管理员
  • 网络及通讯开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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