如何调用tidudpclient

如何调用tidudpclient,第1张

在Client端:

procedure TUDPMainForm.SendButtonClick(Sender: TObject)

var

MessageID: Integer

ThisMessage: String

ReceivedString: String

begin

MessageID := Random(MAXINT)

ThisMessage := 'Message: ' + IntToStr(MessageID)

UDPMemo.Lines.Add('Sending ' + ThisMessage)

UDPClient.Send(ThisMessage)

ReceivedString := UDPClient.ReceiveString() //该方法取得由服务端返回的信息。

if ReceivedString = '' then

UDPMemo.Lines.Add('No response received from the server after ' + IntToStr(UDPClient.ReceiveTimeout) + ' millseconds.')

else

UDPMemo.Lines.Add('Received: ' + ReceivedString)

end

Server端:

procedure TUDPMainForm.UDPServerUDPRead(Sender: TObjectAData: TStreamABinding: TIdSocketHandle)

var

DataStringStream: TStringStream

s: String

begin

DataStringStream := TStringStream.Create('')

try

DataStringStream.CopyFrom(AData, AData.Size)

UDPMemo.Lines.Add('Received "' + DataStringStream.DataString + '" from ' + ABinding.PeerIP + ' on port ' + IntToStr(ABinding.PeerPort))

s := 'Replied from ' + UDPServer.LocalName + ' to "' + DataStringStream.DataString + '"'

ABinding.SendTo(ABinding.PeerIP, ABinding.PeerPort, s[1], Length(s))

finally

DataStringStream.Free

end

TIdUDPServer控件

用来实现一个UDP服务器

所在单元

IdUDPServer

属性

property Bindings: TIdSocketHandles

用来收集f TIdSocketHandle实例。包含ID_SOCK_DGRAM类型的socket。

property DefaultPort: integer

监听新连接的端口。

property ThreadedEvent: boolean

指示UDP读事件的执行方式。是否以线程的形式执行

property Active: Boolean

是否开始监听。

property Binding: TIdSocketHandle

只读属性。指示读写传送的socket句柄。

property BroadcastEnabled: Boolean

是否广播传送数据

property BufferSize: Integer

UDP包的尺寸。

property ReceiveTimeout: Integer

从一个服务中读取数据的超时时间。

property LocalName: string

本地计算机名称。

property Version: string

只读属性,用来获取Indy部件的版本号码。

方法

procedure Broadcast(const AData: stringconst APort: integer)

在网络上发送数据到所有的计算机。

unction ReceiveBuffer(var ABufferconst ABufferSize: Integerconst AMSec: Integer =

IdTimeoutDefault): integeroverload

function ReceiveBuffer(var ABufferconst ABufferSize: Integervar VPeerIP: stringvar

VPeerPort: integerAMSec: Integer = IdTimeoutDefault): integeroverload

远程连接中读取数据

function ReceiveString(const AMSec: Integer = IdTimeoutDefault): stringoverload

function ReceiveString(var VPeerIP: stringvar VPeerPort: integerconst AMSec: Integer =

IdTimeoutDefault): stringoverload

从远程连接中读取数据

procedure Send(AHost: stringconst APort: Integerconst AData: string)

向远程计算机系统发送数据。

procedure SendBuffer(AHost: stringconst APort: Integervar ABufferconst AByteCount:

integer)

向远程计算机系统发送数据

事件

property OnUDPRead: TUDPReadEvent

UDP读取事件发生时执行。

参数

ABinding

接受UDP数据报的socket。

AData

在UDP数据报中接受数据的流。

property OnStatus: TIdStatusEvent

指示当前连接状态的句柄。

参数

aaArgs

用来构造当前状态文本消息的格式化参数。

axStatus

当前连接状态。取值范围与TIdUDPClient类中的OnStatus事件相同。

procedure BeginWork(AWorkMode: TWorkModeconst ASize: Integer = 0)virtual

当OnBeginWork事件触发时执行

AWorkMode可以取的值:

wmRead--从远程连接中读取数据。

wmWrite-- 向远程连接发送数据。

procedure DoWork(AWorkMode: TWorkModeconst ACount: Integer)virtual

当OnWork事件触发时执行。

procedure EndWork(AWorkMode: TWorkMode)virtual

当OnEndWork事件触发时执行。


欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/yw/11436253.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-16
下一篇 2023-05-16

发表评论

登录后才能评论

评论列表(0条)

保存