给你一个例子。Pas文件
unit Unit1;interfaceuses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
StdCtrls, NMUDP, ExtCtrls;type
TForm1 = class(TForm)
GroupBox1: TGroupBox;
GroupBox2: TGroupBox;
GroupBox3: TGroupBox;
Button1: TButton;
Label1: TLabel;
Label2: TLabel;
Label3: TLabel;
Label4: TLabel;
eRemoteHost: TEdit;
eLocalPort: TEdit;
eRemotePort: TEdit;
eSendData: TEdit;
Button2: TButton;
Label5: TLabel;
ePort: TEdit;
Memo1: TMemo;
udpSender: TNMUDP;
udpReceiver: TNMUDP;
bListen: TButton;
Memo2: TMemo;
Button6: TButton;
Label6: TLabel;
Label7: TLabel;
Label8: TLabel;
lSLport: TLabel;
lRLport: TLabel;
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
procedure bListenClick(Sender: TObject);
procedure udpReceiverDataReceived(Sender: TComponent;
NumberBytes: Integer; FromIP: String; Port: Integer);
procedure udpSenderStatus(Sender: TComponent; status: String);
procedure udpReceiverStatus(Sender: TComponent; status: String);
procedure FormCreate(Sender: TObject);
procedure udpSenderInvalidHost(var handled: Boolean);
procedure udpSenderDataReceived(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);
begin
Close;
end;procedure TForm1.Button2Click(Sender: TObject);
var
SendData:Array[0..1024] of char;//最大值不能超过1024;
i,Len:Integer;
begin
Len:=Length(eSendData.Text);
If Len=0 then Exit;
for i:=0 to Len do SendData[i]:=eSendData.Text[i+1];
udpSender.RemoteHost:=eRemoteHost.Text;
udpSender.LocalPort:=StrtoInt(eLocalPort.Text);
udpSender.RemotePort:=StrtoInt(eRemotePort.Text);
udpSender.SendBuffer(Senddata,Len);
lSLport.Caption:=IntToStr(udpSender.LocalPort);
end;procedure TForm1.bListenClick(Sender: TObject);
begin
udpReceiver.LocalPort:=StrtoInt(ePort.Text);
lRLport.Caption:=IntToStr(udpReceiver.LocalPort);
end;procedure TForm1.udpReceiverDataReceived(Sender: TComponent;
NumberBytes: Integer; FromIP: String; Port: Integer);
var
ReadData:Array[0..1024] of char;
Str:String;
i:integer;
begin
if NumberBytes>0 then
Begin
udpReceiver.ReadBuffer(ReadData,NumberBytes);
SetLength(Str,NumberBytes);
for i:=0 to NumberBytes do Str[i+1]:=ReadData[i];
Memo1.Lines.Add('IP:'+FromIP+' P:'+Inttostr(Port)+' Msg:'+Str);
end;
end;procedure TForm1.udpSenderStatus(Sender: TComponent; status: String);
begin
Memo2.Lines.Add('Sender Status:'+Status);
end;procedure TForm1.udpReceiverStatus(Sender: TComponent; status: String);
begin
Memo2.Lines.Add('Receiver Status:'+Status);
end;procedure TForm1.FormCreate(Sender: TObject);
begin
udpSender.ReportLevel:=Status_Basic;
udpReceiver.ReportLevel:=Status_Basic;
end;procedure TForm1.udpSenderInvalidHost(var handled: Boolean);
begin
Memo2.Lines.Add('Receiver Error:InvalidHost');
end;procedure TForm1.udpSenderDataReceived(Sender: TComponent;
NumberBytes: Integer; FromIP: String; Port: Integer);
var
ReadData:Array[0..1024] of char;
Str:String;
i:integer;
begin
if NumberBytes>0 then
Begin
udpSender.ReadBuffer(ReadData,NumberBytes);
SetLength(Str,NumberBytes);
for i:=0 to NumberBytes do Str[i+1]:=ReadData[i];
Memo1.Lines.Add('Is Received By Sender IP:'+FromIP+' P:'+Inttostr(Port)+' Msg:'+Str);
end;
end;end.Dfm文件。
object Form1: TForm1
Left = 134
Top = 99
BorderIcons = [biSystemMenu, biMinimize]
BorderStyle = bsSingle
Caption = 'UDPSample'
ClientHeight = 342
ClientWidth = 576
Color = clBtnFace
Font.Charset = DEFAULT_CHARSET
Font.Color = clWindowText
Font.Height = -11
Font.Name = 'MS Sans Serif'
Font.Style = []
OldCreateOrder = False
Position = poDesktopCenter
OnCreate = FormCreate
PixelsPerInch = 96
TextHeight = 13
object GroupBox1: TGroupBox
Left = 9
Top = 4
Width = 361
Height = 131
Caption = 'Sender'
TabOrder = 0
object Label1: TLabel
Left = 10
Top = 26
Width = 101
Height = 13
Caption = 'Decipient'#39's Name/IP:'
end
object Label2: TLabel
Left = 89
Top = 49
Width = 22
Height = 13
Caption = 'Port:'
end
object Label3: TLabel
Left = 49
Top = 73
Width = 62
Height = 13
Caption = 'Remote Port:'
end
object Label4: TLabel
Left = 65
Top = 96
Width = 46
Height = 13
Caption = 'Message:'
end
object eRemoteHost: TEdit
Left = 113
Top = 21
Width = 89
Height = 21
TabOrder = 0
Text = '192.168.0.3'
end
object eLocalPort: TEdit
Left = 113
Top = 45
Width = 48
Height = 21
TabOrder = 1
Text = '5000'
end
object eRemotePort: TEdit
Left = 113
Top = 70
Width = 49
Height = 21
TabOrder = 2
Text = '6000'
end
object eSendData: TEdit
Left = 113
Top = 94
Width = 240
Height = 21
TabOrder = 3
Text = 'This is a Test for UDP!!'
end
object Button2: TButton
Left = 270
Top = 17
Width = 75
Height = 25
Caption = '&Send Data'
TabOrder = 4
OnClick = Button2Click
end
end
object GroupBox2: TGroupBox
Left = 8
Top = 136
Width = 361
Height = 201
Caption = 'Receiver'
TabOrder = 1
object Label5: TLabel
Left = 7
Top = 22
Width = 22
Height = 13
Caption = 'Port:'
end
object ePort: TEdit
Left = 34
Top = 19
Width = 48
Height = 21
TabOrder = 0
Text = '6000'
end
object Memo1: TMemo
Left = 8
Top = 49
Width = 337
Height = 143
ScrollBars = ssBoth
TabOrder = 1
end
object bListen: TButton
Left = 272
Top = 19
Width = 75
Height = 25
Caption = '&Listen'
TabOrder = 2
OnClick = bListenClick
end
end
object GroupBox3: TGroupBox
Left = 378
Top = 3
Width = 191
Height = 289
Caption = 'Winsock Information'
TabOrder = 2
object Label6: TLabel
Left = 8
Top = 125
Width = 35
Height = 13
Caption = 'Report:'
end
object Label7: TLabel
Left = 20
Top = 46
Width = 92
Height = 13
Caption = 'Sender'#39's LocalPort:'
end
object Label8: TLabel
Left = 11
Top = 64
Width = 101
Height = 13
Caption = 'Receiver'#39's LocalPort:'
end
object lSLport: TLabel
Left = 115
Top = 46
Width = 3
Height = 13
end
object lRLport: TLabel
Left = 114
Top = 64
Width = 3
Height = 13
end
object Memo2: TMemo
Left = 5
Top = 144
Width = 180
Height = 137
ScrollBars = ssBoth
TabOrder = 0
end
end
object Button1: TButton
Left = 483
Top = 307
Width = 75
Height = 25
Caption = 'E&xit'
TabOrder = 3
OnClick = Button1Click
end
object Button6: TButton
Left = 394
Top = 307
Width = 75
Height = 25
Caption = '&Help'
TabOrder = 4
end
object udpSender: TNMUDP
RemotePort = 0
LocalPort = 0
ReportLevel = 1
OnDataReceived = udpSenderDataReceived
OnStatus = udpSenderStatus
OnInvalidHost = udpSenderInvalidHost
Left = 384
Top = 200
end
object udpReceiver: TNMUDP
RemotePort = 0
LocalPort = 0
ReportLevel = 1
OnDataReceived = udpReceiverDataReceived
OnStatus = udpReceiverStatus
Left = 416
Top = 200
end
end你可以用上面的文本生成一个工程了,看看就知道了!!
unit Unit1;interfaceuses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
StdCtrls, NMUDP, ExtCtrls;type
TForm1 = class(TForm)
GroupBox1: TGroupBox;
GroupBox2: TGroupBox;
GroupBox3: TGroupBox;
Button1: TButton;
Label1: TLabel;
Label2: TLabel;
Label3: TLabel;
Label4: TLabel;
eRemoteHost: TEdit;
eLocalPort: TEdit;
eRemotePort: TEdit;
eSendData: TEdit;
Button2: TButton;
Label5: TLabel;
ePort: TEdit;
Memo1: TMemo;
udpSender: TNMUDP;
udpReceiver: TNMUDP;
bListen: TButton;
Memo2: TMemo;
Button6: TButton;
Label6: TLabel;
Label7: TLabel;
Label8: TLabel;
lSLport: TLabel;
lRLport: TLabel;
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
procedure bListenClick(Sender: TObject);
procedure udpReceiverDataReceived(Sender: TComponent;
NumberBytes: Integer; FromIP: String; Port: Integer);
procedure udpSenderStatus(Sender: TComponent; status: String);
procedure udpReceiverStatus(Sender: TComponent; status: String);
procedure FormCreate(Sender: TObject);
procedure udpSenderInvalidHost(var handled: Boolean);
procedure udpSenderDataReceived(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);
begin
Close;
end;procedure TForm1.Button2Click(Sender: TObject);
var
SendData:Array[0..1024] of char;//最大值不能超过1024;
i,Len:Integer;
begin
Len:=Length(eSendData.Text);
If Len=0 then Exit;
for i:=0 to Len do SendData[i]:=eSendData.Text[i+1];
udpSender.RemoteHost:=eRemoteHost.Text;
udpSender.LocalPort:=StrtoInt(eLocalPort.Text);
udpSender.RemotePort:=StrtoInt(eRemotePort.Text);
udpSender.SendBuffer(Senddata,Len);
lSLport.Caption:=IntToStr(udpSender.LocalPort);
end;procedure TForm1.bListenClick(Sender: TObject);
begin
udpReceiver.LocalPort:=StrtoInt(ePort.Text);
lRLport.Caption:=IntToStr(udpReceiver.LocalPort);
end;procedure TForm1.udpReceiverDataReceived(Sender: TComponent;
NumberBytes: Integer; FromIP: String; Port: Integer);
var
ReadData:Array[0..1024] of char;
Str:String;
i:integer;
begin
if NumberBytes>0 then
Begin
udpReceiver.ReadBuffer(ReadData,NumberBytes);
SetLength(Str,NumberBytes);
for i:=0 to NumberBytes do Str[i+1]:=ReadData[i];
Memo1.Lines.Add('IP:'+FromIP+' P:'+Inttostr(Port)+' Msg:'+Str);
end;
end;procedure TForm1.udpSenderStatus(Sender: TComponent; status: String);
begin
Memo2.Lines.Add('Sender Status:'+Status);
end;procedure TForm1.udpReceiverStatus(Sender: TComponent; status: String);
begin
Memo2.Lines.Add('Receiver Status:'+Status);
end;procedure TForm1.FormCreate(Sender: TObject);
begin
udpSender.ReportLevel:=Status_Basic;
udpReceiver.ReportLevel:=Status_Basic;
end;procedure TForm1.udpSenderInvalidHost(var handled: Boolean);
begin
Memo2.Lines.Add('Receiver Error:InvalidHost');
end;procedure TForm1.udpSenderDataReceived(Sender: TComponent;
NumberBytes: Integer; FromIP: String; Port: Integer);
var
ReadData:Array[0..1024] of char;
Str:String;
i:integer;
begin
if NumberBytes>0 then
Begin
udpSender.ReadBuffer(ReadData,NumberBytes);
SetLength(Str,NumberBytes);
for i:=0 to NumberBytes do Str[i+1]:=ReadData[i];
Memo1.Lines.Add('Is Received By Sender IP:'+FromIP+' P:'+Inttostr(Port)+' Msg:'+Str);
end;
end;end.Dfm文件。
object Form1: TForm1
Left = 134
Top = 99
BorderIcons = [biSystemMenu, biMinimize]
BorderStyle = bsSingle
Caption = 'UDPSample'
ClientHeight = 342
ClientWidth = 576
Color = clBtnFace
Font.Charset = DEFAULT_CHARSET
Font.Color = clWindowText
Font.Height = -11
Font.Name = 'MS Sans Serif'
Font.Style = []
OldCreateOrder = False
Position = poDesktopCenter
OnCreate = FormCreate
PixelsPerInch = 96
TextHeight = 13
object GroupBox1: TGroupBox
Left = 9
Top = 4
Width = 361
Height = 131
Caption = 'Sender'
TabOrder = 0
object Label1: TLabel
Left = 10
Top = 26
Width = 101
Height = 13
Caption = 'Decipient'#39's Name/IP:'
end
object Label2: TLabel
Left = 89
Top = 49
Width = 22
Height = 13
Caption = 'Port:'
end
object Label3: TLabel
Left = 49
Top = 73
Width = 62
Height = 13
Caption = 'Remote Port:'
end
object Label4: TLabel
Left = 65
Top = 96
Width = 46
Height = 13
Caption = 'Message:'
end
object eRemoteHost: TEdit
Left = 113
Top = 21
Width = 89
Height = 21
TabOrder = 0
Text = '192.168.0.3'
end
object eLocalPort: TEdit
Left = 113
Top = 45
Width = 48
Height = 21
TabOrder = 1
Text = '5000'
end
object eRemotePort: TEdit
Left = 113
Top = 70
Width = 49
Height = 21
TabOrder = 2
Text = '6000'
end
object eSendData: TEdit
Left = 113
Top = 94
Width = 240
Height = 21
TabOrder = 3
Text = 'This is a Test for UDP!!'
end
object Button2: TButton
Left = 270
Top = 17
Width = 75
Height = 25
Caption = '&Send Data'
TabOrder = 4
OnClick = Button2Click
end
end
object GroupBox2: TGroupBox
Left = 8
Top = 136
Width = 361
Height = 201
Caption = 'Receiver'
TabOrder = 1
object Label5: TLabel
Left = 7
Top = 22
Width = 22
Height = 13
Caption = 'Port:'
end
object ePort: TEdit
Left = 34
Top = 19
Width = 48
Height = 21
TabOrder = 0
Text = '6000'
end
object Memo1: TMemo
Left = 8
Top = 49
Width = 337
Height = 143
ScrollBars = ssBoth
TabOrder = 1
end
object bListen: TButton
Left = 272
Top = 19
Width = 75
Height = 25
Caption = '&Listen'
TabOrder = 2
OnClick = bListenClick
end
end
object GroupBox3: TGroupBox
Left = 378
Top = 3
Width = 191
Height = 289
Caption = 'Winsock Information'
TabOrder = 2
object Label6: TLabel
Left = 8
Top = 125
Width = 35
Height = 13
Caption = 'Report:'
end
object Label7: TLabel
Left = 20
Top = 46
Width = 92
Height = 13
Caption = 'Sender'#39's LocalPort:'
end
object Label8: TLabel
Left = 11
Top = 64
Width = 101
Height = 13
Caption = 'Receiver'#39's LocalPort:'
end
object lSLport: TLabel
Left = 115
Top = 46
Width = 3
Height = 13
end
object lRLport: TLabel
Left = 114
Top = 64
Width = 3
Height = 13
end
object Memo2: TMemo
Left = 5
Top = 144
Width = 180
Height = 137
ScrollBars = ssBoth
TabOrder = 0
end
end
object Button1: TButton
Left = 483
Top = 307
Width = 75
Height = 25
Caption = 'E&xit'
TabOrder = 3
OnClick = Button1Click
end
object Button6: TButton
Left = 394
Top = 307
Width = 75
Height = 25
Caption = '&Help'
TabOrder = 4
end
object udpSender: TNMUDP
RemotePort = 0
LocalPort = 0
ReportLevel = 1
OnDataReceived = udpSenderDataReceived
OnStatus = udpSenderStatus
OnInvalidHost = udpSenderInvalidHost
Left = 384
Top = 200
end
object udpReceiver: TNMUDP
RemotePort = 0
LocalPort = 0
ReportLevel = 1
OnDataReceived = udpReceiverDataReceived
OnStatus = udpReceiverStatus
Left = 416
Top = 200
end
end你可以用上面的文本生成一个工程了,看看就知道了!!
解决方案 »
- 如何利用Webbroeser逐个访问ListBox里面的网址
- 那有结构体的怎么排
- 这两个是什么delphi 控件?
- 请问哪里有TSeSkinPanel、TSeSkinLabel....等TSeSkin系列的控件下载????
- ★★★★★请问如何在DBD中删除表的字段名 在线等待
- 动态数组的地址怎样取得?
- 服务器上有一个带有参数的存储过程,用clientdataset如何在客户端调用她??????
- 你们知道吗?
- 小弟,有一问题,想问大哥,我想用什么方法可以将一副图,添加到另一副图中,就像,我敲个图章一样
- 如何在LISTBOX中插入80000条以上的ITEM?用ITEMS->LOADFROMFIELD()方法如何实现?
- 问一个问题:当鼠标移动到speedbutton上时,怎样让汉字具有立体效果?
- 关于函数指针的问题?
buffer:array [0..1023] of char
还有clientsocket.socket.receivebuf(buffer,clientsocket.socket.receivelength)
这句最好这样写
len:integer;
clientsocket.socket.receivebuf(buffer,len);
最后你的richedit.text文件最好用blockread(filename,buffer,sizeof(buf),.......)读出来
blockread(filename,buffer,sizeof(buffer))中filename用来干什么的?
blockread(filename,buffer,sizeof(buffer))中filename用来干什么的?我到现在还没弄明白socket.receivebuf()到底是怎么工作的?他是不是在执行socket.receivebuf()一举时,把全部的信息都接收完了?尤其是在接受结构数组的时候???
谢谢!