UDP传送图片收不到 本帖最后由 kitty1kitty 于 2010-12-02 23:00:31 编辑 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 你确定连接没问题吗 udp本身可靠性就差啊 连接上了,我后来增加一个按钮只发字符的就可str:='aaaaa';IdUDPClient1.Send(str);证明连接是没有问题 UDP 数据报的大小是有限制的,你截屏后,虽然使用 JPEG 以最低质量压缩了,但你确保待发送数据量的大小,没有超过 UDP 数据报的限制吗?delphi 本身的 TNMUDP 一次只能发送 2K 的数量。我也正在做这样的项目,我的方法是,将每张JPEG分成很多帧,然后使用UDP一帧一帧的发到接收端,接收端把收到的帧组合起来,回显。但我的这个方法也有一些问题,UPD 要掉包。我正准备在论子里发个帖子求助。 picM.CopyFrom(AData,AData.Size);似乎不能这么写吧picM.CopyFrom(AData,SizeOf(AData)); 你说的网上是什么?估计是局域网对另外的局域网你的IP 你的路由NAT 其他的IP 其他的路由NAT需要穿透NAT,要不找个有个独立IP(公网)的机器要不用中转服务器来做中转 楼主,我想问问,你的 IdUDPClient1 是 delphi 的 TNMUDP 控件吗?还是第三方控件?Declarationprocedure SendBuffer(Buff: array of char; length: integer);delphi 的 TNMUDP.SendBuffer() 函数的第一个参数不能接收指针,你的代码应该在编译时报错,我想你用的是第三方UDP控件吧? 明白了,你的 IdUDPClient1 是 delphi7 中的 TIdUDPClient 控件,它的 SendBuffer() 函数是重载了的。Sends a buffer containing data to the remote system.procedure SendBuffer(var ABuffer; const AByteCount: integer); overload; 在我家的两台电脑用一个路由联接,分别在两台机做接和收,运行,接收端没变化,不能得到要的结果我拿到一个机房,(20台机的局域网上)分别用其中的两台试接和收,运行,接收端能正常接收。但今天我又拿到另外一个机房(也是20台机的局域网上)分别用其中的两台试接和收,运行,这回又不行了,接收端能表能正常接收。为什么在有些地方行,有些地方不行,后来我怀疑是不是与杀毒软件有关,比较了一下,大家都一样装有360,在不行的网里试着关接杀毒软件,还是不行To:jrmd你说的重载是要在代码后加一个overload就行了吗? 不知道你家里的局域网怎么搭的运行的代码的时候,你两个电脑有没固定局域网IP可以用抓包工具看下UDP包发送情况, 主要是IP 和 端口机房就不好说,有些机房会拦截一些UDP包的 既然跟网络环境有关系,那你就得查查是否是在同一个路由器下面了。我记得路由器是不转发UDP广播的,因此,不在同一个UDP下的255.255.255.255是不会收到广播信息的。 是在同一个路由下的局域网,后来的把HOST改为网段加255,即192.168.1.255,本机可以收到,但其它机还是不行。用255.255.255.255本机都不能收到 你这样直接把整个图片数据发送不行吧?一张图很大的话,应该会有问题。我以前也用TidUDPClient和TidUDPServer写过传图片的程序,是把图片分成一个一个包发的,请看这里:http://hi.baidu.com/0xcea4/blog/item/dfc989121f16f0866438db2c.html indyTCP提供了个源码的例子~~~这个不会有这样子的情况的~~~你说的情况应该跟你的网络环境有关,而且UDP发包大小有限制的~~ delphi中获取黏贴板内容的问题 关于子查询 关于SDK的简单问题!大侠们帮帮吧。 捕捉消息,如何得到发出消息的对象呢? 求解下列Vb函数ToDelphi6 关于DateTime的转换(在线等待!) 使用LNDY发邮件的时后出错,为是什么错误? 111怎样使一个 edit.text 保存上一次执行是输入的内容? 某公司(北京)开出如下用人条件:敬请大家关注 这样的列表delphi里面用什么控件来实现 怎么删除ThinkPad本子上的系统文件 有没有X86架构的基础书籍,想看看
str:='aaaaa';
IdUDPClient1.Send(str);证明连接是没有问题
你截屏后,
虽然使用 JPEG 以最低质量压缩了,
但你确保待发送数据量的大小,没有超过 UDP 数据报的限制吗?
delphi 本身的 TNMUDP 一次只能发送 2K 的数量。
我也正在做这样的项目,
我的方法是,
将每张JPEG分成很多帧,
然后使用UDP一帧一帧的发到接收端,
接收端把收到的帧组合起来,回显。但我的这个方法也有一些问题,UPD 要掉包。
我正准备在论子里发个帖子求助。
似乎不能这么写吧
picM.CopyFrom(AData,SizeOf(AData));
估计是局域网对另外的局域网
你的IP 你的路由NAT
其他的IP 其他的路由NAT
需要穿透NAT,
要不找个有个独立IP(公网)的机器
要不用中转服务器来做中转
你的 IdUDPClient1 是 delphi 的 TNMUDP 控件吗?
还是第三方控件?Declaration
procedure SendBuffer(Buff: array of char; length: integer);delphi 的 TNMUDP.SendBuffer() 函数的第一个参数不能接收指针,你的代码应该在编译时报错,
我想你用的是第三方UDP控件吧?
你的 IdUDPClient1 是 delphi7 中的 TIdUDPClient 控件,
它的 SendBuffer() 函数是重载了的。Sends a buffer containing data to the remote system.
procedure SendBuffer(var ABuffer; const AByteCount: integer); overload;
我拿到一个机房,(20台机的局域网上)分别用其中的两台试接和收,运行,接收端能正常接收。
但今天我又拿到另外一个机房(也是20台机的局域网上)分别用其中的两台试接和收,运行,这回又不行了,接收端能表能正常接收。为什么在有些地方行,有些地方不行,后来我怀疑是不是与杀毒软件有关,比较了一下,大家都一样装有360,在不行的网里试着关接杀毒软件,还是不行
To:jrmd
你说的重载是要在代码后加一个overload就行了吗?
运行的代码的时候,你两个电脑有没固定局域网IP
可以用抓包工具看下UDP包发送情况, 主要是IP 和 端口
机房就不好说,有些机房会拦截一些UDP包的