请看下面代码为啥出错!倾家荡产全部分奉上(80分)

  • 主题发起人 主题发起人 梦之旅
  • 开始时间 开始时间

梦之旅

Unregistered / Unconfirmed
GUEST, unregistred user!
unit Unit1;

interface

uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, IdBaseComponent, IdComponent, IdUDPBase, IdUDPServer, StdCtrls;

type
TForm1 = class(TForm)
Button1: TButton;
IdUDPServer1: TIdUDPServer;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;

var
Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
begin
IdUDPServer1.DefaultPort :=5000;
IdUDPServer1.Active :=True;
IdUDPServer1.Send('127.0.0.1',6000,'1234567890');

end;

end.

上面的程序运行时出下列错误
Project Project1.exe rised exception class EIdSocketError with message 'Socket Error #10054 Connection reset by peer.'.Process stopped.Use Step or Run to continue.

用的是D6 & win2000 server

如果把ip地址改为一个网络中存在,但没有接受它发送的消息,也出现上述错误。
改为一个不存在ip,就不出错。

我想让它象FastNet中的NMUDP一样,随便发送,不管ip是否存在,是否接受改信息。

请大侠出招。



 
To: truecat 哥,它没有OnError事件吖/
 
指定的6000端口不存在(客户端没运行)。
你改为IdUDPServer1.Send('127.0.0.1',80,'1234567890')肯定可以。
 
不会吧,端口号是0-65535的,怎么会6000就不行了呢?
当然,你程序出错就是因为在连接客户端的6000端口时无法连接出错的。
你需要把出错信息拦截下来,你用
try
IdUDPServer1.Send('127.0.0.1',6000,'1234567890')
except
showmessage('Wrong!');
试试,不好意思,我没用过这个控件,只能给你建议。。。
 
:weekboy,

哪有什么用啊
 
udp有这个错误吗?又不是tcp?
 
有啊,不信你试试啊
 
下面2行放在form的oncreate事件:

IdUDPServer1.DefaultPort :=5000;
IdUDPServer1.Active :=True;

下面1行才放在onclick事件:

IdUDPServer1.Send('127.0.0.1',6000,'1234567890');

试试
 
你必须判断指定的IP和端口是否存在,可以在IdUDPServer1.Active :=True之前判断。
 
:weekboy怎么判断啊 ?
 

Similar threads

S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
I
回复
0
查看
678
import
I
后退
顶部