Semantic-Data
over the User Datagram Protocol (UDP) to be compliant with the specifications mentioned in the section Normative references.Transport
over UDP is provided by the project Networking.UDPMessageHandler. Because intentionally the SDK is designed to use any transport protocol, a custom external component implementing UDP connectivity can be seamlessly integrated with this SDK using dependency injection concept illustrated by the following domain model:Message
datagrams to other programs with a minimum of protocol mechanism. Using this protocol the messages delivery and duplicate protection are not guaranteed.data octets
(stream of bytes). The Length
field in the protocol header contains the length in octets of the user datagram including the header and the data octets
.Source Port
: - indicates the port of the sending process;Destination Port
: indicates the port of the ultimate destination process;Source Port
and Destination Port
have a meaning only within the context of a particular internet address.Publisher
: pushes messages to an underlying transport` layer.Subscriber
: polls messages from the underlying transport layer.Publisher
is the actor that pushes NetworkMessage
structures to an underlying transport layer. It represents a certain data source, for example, a control device, a manufacturing process, a weather station, or a stock exchange. It may be also OPC UA Clients, OPC UA Servers or in general any applications that understand the syntax and semantics of the NetworkMessage
structure.Subscriber
actors are the consumers of NetworkMessage
structure, which are polled from the underlying transport layer. They may be OPC UA Clients, OPC UA Servers or in general any applications that understand the syntax and semantics of the NetworkMessage
structure.Publisher
and Subscriber
don't have any subscriptions management functionality, namely, they follow a communication paradigm called unsolicited notification. When unsolicited notification occurs, a client receives a message that it has never requested. The Subscriber
must use a filtering mechanism to process only messages it is interested in.NetworkMessage
structure serialized as the UDP Message
payload.Source Port
/Destination Port
and appropriate Internet address must be provided by the PubSub upper communication layer.Publisher
shall support all variations it allows through configuration. The required set of features is defined through profiles defined in OPC UA Part 7: Profiles. A Subscriber
shall be able to process all possible NetworkMessage
types and shall be able to skip information the Subscriber
is not interested in. The Subscriber
may not support all security policies.NetworkMessage
is sent as the UDP data octets
. It is expected that the Subscriber
process receiving the NetworkMessage
can process it without needing to know that it was transported via UDP.opc.udp://<host>[:<port>]
4840
. This is the default and recommended port for broadcast, multicast, and unicast communication. Alternative ports may be defined.Transport
layer for the UDP protocol is illustrated by the project UA Data Example Application. This library implements the IMessageHandlerFactory
in the class MessageHandlerFactory
used to create communication infrastructure for the Consumer
and Producer
role as well.JoinMulticastGroup
method subscribes the UdpClient
to a multicast group using the specified IPAddress
. After calling the JoinMulticastGroup
method, the underlying Socket
sends an Internet Group Management Protocol (IGMP) packet to the router requesting membership to the multicast group. The multicast address range is 224.0.0.0
to 239.255.255.255
. If you specify an address outside this range or if the router to which the request is made is not multicast enabled, UdpClient
will throw a SocketException
. Once the UdpClient
is listed with the router as a member of the multicast group, it will be able to receive multicasted datagrams sent to the specified IPAddress
. Publisher
do not need to belong to a multicast group to send datagrams to a multicast IP address. To get more details visit the MSDN online documentation.