RUDPClient Class

Properties   Methods   Events   Configuration Settings   Errors  

The RUDPClient class is a Reliable UDP client based on an asynchronous, event-driven architecture.

Syntax

ipworksp2p.Rudpclient

Remarks

The RUDPClient class implements a Reliable UDP client based on RFC 908. Use of RUDPClient guarantees that data is delivered to the remote host using UDP as a transport mechanism.

Our main goal in designing RUDPClient was ease of use. The class has a minimum of properties and events.

The connection is attempted by calling the Connect method or setting the Connected property to True, and then waiting for the Connected event. The destination is defined by setting RemoteHost and RemotePort. Data is sent by calling the Send method with Text as a parameter, or by assigning the data string to the DataToSend property.

To disconnect, call the Disconnect method or set the Connected property to False. The Linger property controls how the connection is terminated.

The operation of the class is can be synchronous or asynchronous depending on the value of Timeout.

Rudpserver server = new Rudpserver();
server.OnDataIn += (s,e) => {
  //The DataIn event fires when data is received.
  Console.WriteLine("Server Received: " + e.Text);
  //Echo text back
  server.Connections[e.ConnectionId].DataToSend = e.Text;
};

server.LocalPort = 4444;
server.Listening = true;

Rudpclient client = new Rudpclient();
client.OnDataIn += (s, e) => {
  //The DataIn event fires when data is received.
  Console.WriteLine("Client Received: " + e.Text);
};

client.Connect("localhost", 4444);

//Send data to the server
client.DataToSend = "Hello World!";

Property List


The following is the full list of the properties of the class with short descriptions. Click on the links for further details.

AcceptDataEnables or disables data reception (the DataIn event).
BytesSentThe number of bytes actually sent after an assignment to DataToSend .
ConnectedTriggers a connection or disconnection.
DataToSendA string of data to be sent to the remote host.
EncryptingAlgorithmThen encryption algorithm used when encrypting.
EncryptionPasswordThen password to encrypt the connection.
KeepAliveWhen True, KeepAlive packets are enabled (for long connections).
LingerWhen set to True, connections are terminated gracefully.
LocalHostThe name of the local host or user-assigned IP interface through which connections are initiated or accepted.
LocalPortThe port in the local host to which the class binds.
RemoteHostThe address of the remote host. Domain names are resolved to IP addresses.
RemotePortThe UDP port in the remote host.
SSLAcceptServerCertInstructs the class to unconditionally accept the server certificate that matches the supplied certificate.
SSLCertThe certificate to be used during SSL negotiation.
SSLEnabledWhether TLS/SSL is enabled.
SSLServerCertThe server certificate for the last established connection.
TimeoutA timeout for the class.

Method List


The following is the full list of the methods of the class with short descriptions. Click on the links for further details.

ConfigSets or retrieves a configuration setting.
ConnectConnects to a remote host.
DisconnectDisconnects from the remote host.
DoEventsProcesses events from the internal message queue.
InterruptInterrupts the current action.
SendSends data to the remote host.
SendFileSends file to the remote host.
SendKeepAliveSends a keepalive packet.
SetReceiveStreamSets the stream to which received data will be written.
SetSendStreamReads content from the stream and sends it to the server.

Event List


The following is the full list of the events fired by the class with short descriptions. Click on the links for further details.

ConnectedFired immediately after a connection completes.
ConnectionStatusFired to indicate changes in connection state.
DataInFired when data comes in.
DisconnectedFired when a connection is closed.
ErrorInformation about errors during data delivery.
ReadyToSendFired when the class is ready to send data.
SSLServerAuthenticationFired after the server presents its certificate to the client.
SSLStatusShows the progress of the secure connection.
StatusFires with information about the operation.

Configuration Settings


The following is a list of configuration settings for the class with short descriptions. Click on the links for further details.

CloseStreamAfterTransferIf true, the class will close the upload or download stream after the transfer.
KeepAliveIntervalThe retry interval, in seconds, to be used when a keep-alive packet is sent and no response is received.
KeepAliveRetryCountThe number of times to retry sending the keep-alive packet when there is no response.
KeepAliveTimeThe inactivity time in seconds before a keep-alive packet is sent.
LogOptionsThe level of messages to log.
MaxIncomingOutstandingCountThe maximum number of outstanding segments.
MaxIncomingSegmentSizeThe maximum segment size in bytes.
MaxOutgoingOutstandingCountThe maximum number of outstanding segments when sending to other party.
MaxOutgoingSegmentSizeThe maximum segment size of the other party in bytes.
MaxRetransmitCountThe maximum number of retransmission attempts.
RetransmitTimeoutThe timeout in milliseconds between retransmit attempts.
SequencedDeliveryWhether the connection uses sequenced delivery.
UseWorkerThreadWhether to use a background thread to process outstanding operations.
CaptureIPPacketInfoUsed to capture the packet information.
DestinationAddressUsed to get the destination address from the packet information.
DontFragmentUsed to set the Don't Fragment flag of outgoing packets.
LocalHostThe name of the local host through which connections are initiated or accepted.
LocalPortThe port in the local host where the class binds.
MaxPacketSizeThe maximum length of the packets that can be received.
QOSDSCPValueUsed to specify an arbitrary QOS/DSCP setting (optional).
QOSTrafficTypeUsed to specify QOS/DSCP settings (optional).
ShareLocalPortIf set to True, allows more than one instance of the class to be active on the same local port.
UseConnectionDetermines whether to use a connected socket.
UseIPv6Whether or not to use IPv6.
AbsoluteTimeoutDetermines whether timeouts are inactivity timeouts or absolute timeouts.
FirewallDataUsed to send extra data to the firewall.
InBufferSizeThe size in bytes of the incoming queue of the socket.
OutBufferSizeThe size in bytes of the outgoing queue of the socket.
BuildInfoInformation about the product's build.
GUIAvailableTells the class whether or not a message loop is available for processing events.
LicenseInfoInformation about the current license.
UseDaemonThreadsWhether threads created by the class are daemon threads.
UseInternalSecurityAPITells the class whether or not to use the system security libraries or an internal implementation.

Copyright (c) 2022 /n software inc. - All rights reserved.
IPWorks P2P 2020 Java Edition - Version 20.0 [Build 8235]