UDP发数据为什么会这样?

7838205 2003-10-07 07:58:38
为什么会这样,我用udp想做一个聊天的程序,
upd:tNMUDP;端口均为2000(暂用本机作试验)
按下按钮发消息到本机,但收到时为什么不正确,如下程序,收到的数据将是:
“from:127.0.0.1,bytes:18=>hell”
也就是说只有前四个字符正确,后面是乱码,而且换发别的数据也同样只有前四个字符正确,请大家说说问题在哪里?

相关代码如下:
procedure TForm1.Button1Click(Sender: TObject);
var str:string;
begin
udp.RemoteHost:='127.0.0.1';
str:='hello,how are you!';
udp.SendBuffer(str[1],length(str));
end;


procedure TForm1.udpDataReceived(Sender: TComponent; NumberBytes: Integer;
FromIP: String; Port: Integer);
var str:string;
begin
setlength(str,numberbytes);
udp.ReadBuffer(str[1],numberbytes);
memo1.Lines.Add('from:'+fromip+',bytes:'+inttostr(numberbytes)+'=>'+str);
end;

另外顺便问一句:我想发一条广播消息,IP地址设为255.255.255.255为什么不行,他会提示host lookup error什么的!只有设为192.168.0.255才能在本局域内发,设为192.168.255.255也不行,这是否跟子网掩码有关(是255.255.255.0),那么如何在程序中得到子网掩码呢?

...全文
97 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
hudawq 2003-10-08
  • 打赏
  • 举报
回复
另外顺便问一句:我想发一条广播消息,IP地址设为255.255.255.255为什么不行,他会提示host lookup error什么的!只有设为192.168.0.255才能在本局域内发,设为192.168.255.255也不行,这是否跟子网掩码有关(是255.255.255.0),那么如何在程序中得到子网掩码呢?
这跟ip地址有关,有A,B,C类ip之分
mme 2003-10-08
  • 打赏
  • 举报
回复
也就是说只有前四个字符正确,后面是乱码

说明你发送或者接收的数目不对
udp.SendBuffer(str[1],length(str));
udp.ReadBuffer(str[1],numberbytes);
看看你的length(str) 和 numberbytes是不是正确了。
不如你先把他们改成一个数字来试试看就知道了。

1,594

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 网络通信/分布式开发
社区管理员
  • 网络通信/分布式开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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