关于UDP传输
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