当前位置:主页>delphi7/进销存和数据库> 文章内容

关于UDP传输

发布时间:2010-02-02 | QQ免费站
1楼: 我使用TidUDpClient 和T IDUDPSERVER控件的进行UDP传输, 我发现这两个控件在98操作系统下不传输 测试源码如下: 发送端放了一个Edit1 一个button 一个IdUDPClient1控件 button下代码如下: procedure TForm1.Button1Click(Sender: TObject); begin IdUDPClient1.Broadcast(edit1.Text,1923); end; 接受端 放了一个MEmo 一个IdUDPServer1控件 代码如下 procedure TForm1.IdUDPServer1UDPRead(Sender: TObject; AData: TStream; ABinding: TIdSocketHandle); Var Rec:Tstringstream; a:string; begin Rec:=Tstringstream.Create(‘‘); Rec.CopyFrom(Adata,0); a:=Rec.DataString; memo1.Lines.Add(a); end; 我觉得代码应该没问题,只是没有设置两个控件的host属性 将port属性都设成1923 对不对啊?为什么在2000上可以传输 在98上不行啊??? 是不是这两个控件的问题?如果是该怎么解决啊?大侠们 兄弟大恩不言谢啦!!! 症状: 还有做测验的98机器访问不了2000操作系统的机器,报错没有权限 两个小程序同时装在2000上传输没问题 装在98上就用不了 [?]
字串3

2楼: 你改一下端口,1024以上最好,因为1024以下的容易和系统内部使用造成冲突;也许你的98电脑上的1923端口被其他程序占用了,也有可能的。TidUDpClient 和T IDUDPServer控件没有TNMUDP好用,介意你用TNMUDP! 字串4

3楼: 现在delphi7以上的版本好象没有TNMUP组件了,不知道你有没有 Use IdSocketHandle

字串7

4楼: 各位大俠,教我怎麼用啊! 字串2

5楼: 加 \0 做尾看;
字串8

6楼: TidUDpClient 和TIDUDPSERVER这两个没用过,我可以给你TNMUDP方面的代码...,另外,你在网上应该能找到TidUDpClient 和T IDUDPSERVER的用法的...
字串7

7楼: 谢谢 fancy100大哥 我也遇到了一个关于 procedure TForm1.IdUDPServer1UDPRead(Sender: TObject; AData: TStream; ABinding: TIdSocketHandle); 的问题,编译时警告 TIdSockethandle 没有声明,加上 use IdSocketHandle 后 就解决问题了
字串1

8楼: 不是端口冲突吗?应该不会有这种问题啊。 字串5

9楼: 在win98用的是socket1 在2000用的是2的原因吧 字串4

10楼: 小猪兄,你说的Socket1 和 2 是什么意思啊?

字串4

11楼: socket还有什么1和2的区别么?只知道串口有1,2,3.......N 字串3

12楼: Dongy_143兄,能给我关于TNMUDP方面的代码吗?我的邮箱是DIFF2008◎21cn.com 方便的话发给我啦,谢谢!

字串6

13楼: 已经发到DIFF2008◎21cn.com信箱,请查收 字串1

14楼: 没收到啊,要不换个邮箱suck2008@tom.com试试 再次感谢啊! 字串2

15楼: socket版本的不同 2比1多了好多的函数 有些98是1的 如果这样有可能出错的 字串9

16楼: 我首先搞不懂为什么有人会用“TidUDpClient”,其次搞不懂为什么有人说“TNMUDP好用”~

字串8

17楼: 楼上的,你说说,为什么你不用TidUDPClient和你认为TNMUDP为什么不好用的原因呢? 即使你说的对,你也要说出原因啊!在这里说一句话就跑了,你什么意思?

字串7

18楼: TIdUDPClient组件存在不少缺陷,比如无法指定本地客户端端口,无法获得自动分配的端口等等 貌似ics控件组比较不错 ps 都什么年代了楼主还在考虑win98么?win9x都有严重的内存泄漏问题,微软都抛弃了,楼主也不必再……[8D]
字串6

19楼: 用98是因为要考虑到程序再各种操作系统都可以使用的原因。这个软件不一定就在我机子上用啊。 现在问题是,我做的客户端(TIDUDPSERVER) 和 服务端(TIdUDPClient) 两个程序 我把他们考再2000上,同时在一台机子上运行,传输没问题,考在98上,同时运行 客户端就收不到发送的数据啊! 为什么???给个理由?

字串9

20楼: 可能就是楼上说的win98用winsock1而win2000是用winsock2,而控件在winsock1环境下可能出现的一些诸如不兼容等问题吧

字串3

21楼: 这个问题原来就有人问过。你可以去查一下离线数据库。 我记着最后的结果就是说98是sock1,2000是sock2造成的。

字串3

22楼: socket版本的不同 2比1多了好多的函数 有些98是1的 如果这样有可能出错的 这个原因

字串4

23楼: 如果是这个原因,那该怎么办呢?换控件?各位大哥,觉得哪个控件更合适啊! 字串1

24楼: 多人接受答案了。 字串8