我用TNMUDP做的通信,如何跟外网发送数据,在线等(谢谢) 大家好! 我的问题如题目,希望哪个好心人能帮我一个,最好说详细点,谢谢啦。 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 这个组件现在已经没有多少人用了,建议你使用indy unit UDPDem;interfaceuses Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, ComCtrls, NMUDP, ExtCtrls;type TForm1 = class(TForm) NMUDP1: TNMUDP; PageControl1: TPageControl; TabSheet1: TTabSheet; TabSheet2: TTabSheet; Edit1: TEdit; Edit2: TEdit; Label1: TLabel; Label2: TLabel; Edit3: TEdit; Label3: TLabel; Button1: TButton; Panel1: TPanel; Button2: TButton; Memo1: TMemo; StatusBar1: TStatusBar; procedure Button1Click(Sender: TObject); procedure Button2Click(Sender: TObject); procedure NMUDP1Status(Sender: TComponent; status: String); procedure NMUDP1DataSend(Sender: TObject); procedure NMUDP1InvalidHost(var handled: Boolean); procedure NMUDP1DataReceived(Sender: TComponent; NumberBytes: Integer; FromIP: String; Port: Integer); private { Private declarations } public { Public declarations } end;var Form1: TForm1;implementation{$R *.DFM}//--发送数据procedure TForm1.Button1Click(Sender: TObject);var MyStream: TMemoryStream; TmpStr: String;Begin NMUDP1.ReportLevel := Status_Basic; NMUDP1.RemoteHost := Edit1.Text; NMUDP1.RemotePort := StrToInt(Edit2.Text); TmpStr := Edit3.Text; MyStream := TMemoryStream.Create; try MyStream.Write(TmpStr[1], Length(Edit3.Text)); NMUDP1.SendStream(MyStream); finally MyStream.Free; end;end;procedure TForm1.Button2Click(Sender: TObject);begin Memo1.Clear;end;procedure TForm1.NMUDP1Status(Sender: TComponent; status: String);begin If StatusBar1 <> nil then StatusBar1.SimpleText := status;end;procedure TForm1.NMUDP1DataSend(Sender: TObject);begin StatusBar1.SimpleText := 'Data Sent';end;procedure TForm1.NMUDP1InvalidHost(var handled: Boolean);var TmpStr: String;begin If InputQuery('Invalid Host!', 'Specify a new host:', TmpStr) then Begin NMUDP1.RemoteHost := TmpStr; Handled := TRUE; End;end;//--接收数据procedure TForm1.NMUDP1DataReceived(Sender: TComponent; NumberBytes: Integer; FromIP: String; Port: Integer);var MyStream: TMemoryStream; TmpStr: String;begin MyStream := TMemoryStream.Create; try NMUDP1.ReadStream(MyStream); SetLength(TmpStr,NumberBytes); MyStream.Read(TmpStr[1],NumberBytes); Memo1.Lines.Add(FromIP+': '+TmpStr); finally MyStream.Free; end;end; end. indy下有好多例子,不过写这种程序,还是看看API和INDY的源代码比较好。 关于字符串比较问题 请朋友们帮忙做一下我们职称考试的一道题 请教一个不打印0的问题 寻找一个思路 ●→我的日期和时间显示经验谈(请高手指正)←● 嵌入汇编如何搞? 菜鸟散分:delphi6如何已经加了密的access数据库(当然是知道密码的) 如何写这样的一个SQL的更新语句,请教各位高手。 哪里有关于linux方面的学习网站? 除delphi自带的做安装盘的工具外,还有哪些其它的方式? 这样的程序如何实现?是不是有点难。我很菜! 编译错误
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
StdCtrls, ComCtrls, NMUDP, ExtCtrls;type
TForm1 = class(TForm)
NMUDP1: TNMUDP;
PageControl1: TPageControl;
TabSheet1: TTabSheet;
TabSheet2: TTabSheet;
Edit1: TEdit;
Edit2: TEdit;
Label1: TLabel;
Label2: TLabel;
Edit3: TEdit;
Label3: TLabel;
Button1: TButton;
Panel1: TPanel;
Button2: TButton;
Memo1: TMemo;
StatusBar1: TStatusBar;
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
procedure NMUDP1Status(Sender: TComponent; status: String);
procedure NMUDP1DataSend(Sender: TObject);
procedure NMUDP1InvalidHost(var handled: Boolean);
procedure NMUDP1DataReceived(Sender: TComponent; NumberBytes: Integer;
FromIP: String; Port: Integer);
private
{ Private declarations }
public
{ Public declarations }
end;var
Form1: TForm1;implementation{$R *.DFM}
//--发送数据
procedure TForm1.Button1Click(Sender: TObject);
var
MyStream: TMemoryStream;
TmpStr: String;
Begin
NMUDP1.ReportLevel := Status_Basic;
NMUDP1.RemoteHost := Edit1.Text;
NMUDP1.RemotePort := StrToInt(Edit2.Text);
TmpStr := Edit3.Text;
MyStream := TMemoryStream.Create;
try
MyStream.Write(TmpStr[1], Length(Edit3.Text));
NMUDP1.SendStream(MyStream);
finally
MyStream.Free;
end;
end;procedure TForm1.Button2Click(Sender: TObject);
begin
Memo1.Clear;
end;procedure TForm1.NMUDP1Status(Sender: TComponent; status: String);
begin
If StatusBar1 <> nil then
StatusBar1.SimpleText := status;
end;procedure TForm1.NMUDP1DataSend(Sender: TObject);
begin
StatusBar1.SimpleText := 'Data Sent';
end;procedure TForm1.NMUDP1InvalidHost(var handled: Boolean);
var
TmpStr: String;
begin
If InputQuery('Invalid Host!', 'Specify a new host:', TmpStr) then
Begin
NMUDP1.RemoteHost := TmpStr;
Handled := TRUE;
End;
end;
//--接收数据
procedure TForm1.NMUDP1DataReceived(Sender: TComponent;
NumberBytes: Integer; FromIP: String; Port: Integer);
var
MyStream: TMemoryStream;
TmpStr: String;
begin
MyStream := TMemoryStream.Create;
try
NMUDP1.ReadStream(MyStream);
SetLength(TmpStr,NumberBytes);
MyStream.Read(TmpStr[1],NumberBytes);
Memo1.Lines.Add(FromIP+': '+TmpStr);
finally
MyStream.Free;
end;
end; end.