用Tidudpserver 控件 的send方法,怎么对方接收不到数据,请看代码

jackyjian 2005-05-28 05:21:10
server端:
void __fastcall TForm1::SendClick(TObject *Sender)
{
Server->Send("192.168.0.21",8090,Edit1->Text);//send 的用法是不是有问题啊?
}
客户端:用timer控件,每隔一段事件接收一次:
void __fastcall TForm2::Timer1Timer(TObject *Sender)
{
String Rvc=Client->ReceiveString();
Memo1->Lines->Add(Rvc);
}

memo里没有增加任何数据.请教了!
...全文
205 8 打赏 收藏 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
constantine 2005-06-03
  • 打赏
  • 举报
回复
你是用server向Client发消息?
既然你要一直监听server发过来的消息,那么两边都用idudpserver好了
然后在OnRead里面写代码
如果你用client要注意有没有对上
jackyjian 2005-06-03
  • 打赏
  • 举报
回复
非常感谢pitot,你说反过来发消息不太好。那么如果需要client端收取消息怎么办呢?比如聊天室,每个聊天的都得接收别人发的消息吧,并且也可给别的client端发消息啊。这该用怎么法实现呢?还请进一步指教。
pitot 2005-06-02
  • 打赏
  • 举报
回复
jackyjian(失心公子)你没有在客户端打开监听端口吧?可以这么写
IdUDPClient1->Binding->IP = "0.0.0.0";
IdUDPClient1->Binding->Port = 8090;
IdUDPClient1->Binding->Bind();
IdUDPClient1->Active = true;
可以用netstat -na -p udp查看8090端口是不是处于监听态。
然后你的timer事件中就可以收到数据了。

不过,Indy是阻塞的,读不到数据时会停在那里,timer事件处理还是挺烦得。
总觉得这样反过来发消息不太说的过去,呵呵。
jackyjian 2005-05-30
  • 打赏
  • 举报
回复
Client 发给server当然没问题,因为server有onread事件,但server发给client 应该也可以,否则这个Tidudp控件局限性也太大了,但是client怎么接收,idudpclient 没有相应的onread事件,我的方法是放在client端放一个timer控件,每隔一段时间就触发一次接收命令.但好像不行,接收不到.唉!indy的这个tdp控件不如她的tcp控件好用.
wg961423 2005-05-30
  • 打赏
  • 举报
回复
反正我用IDTcp就是这样的,Client发到Server!
wg961423 2005-05-30
  • 打赏
  • 举报
回复
好像应该用Client发给Server吧!
jackyjian 2005-05-30
  • 打赏
  • 举报
回复
idudp 控件只能在server端收取数据吗?我的意思是让server给某个client发信息,那么client端怎么收取数据?难道只能把收取数据放在ONread事件里?请看看我的代码,哪里出了问题?
pitot 2005-05-29
  • 打赏
  • 举报
回复
在TIdUDPServer的OnUDPRead事件中读取数据。

1,317

社区成员

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

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