Click or drag to resize

CotpClient Class

A COTP client socket.
Inheritance Hierarchy
SystemObject
  Demo3D.Net.ProtocolsCotpClient

Namespace:  Demo3D.Net.Protocols
Assembly:  Demo3D.IO (in Demo3D.IO.dll) Version: 15.0.2.11458
Syntax
C#
public static class CotpClient
Methods
  NameDescription
Public methodStatic memberCode exampleOpen(String, Byte, Flags, Int32)
Open an ISO COTP connection.
Public methodStatic memberCode exampleOpen(String, Byte, NotifyDataChangedEventHandler, Int32)
Open an ISO COTP connection.
Public methodStatic memberCode exampleOpen(String, String, Flags, Int32)
Open an ISO COTP connection.
Public methodStatic memberCode exampleOpen(String, String, NotifyDataChangedEventHandler, Int32)
Open an ISO COTP connection.
Public methodStatic memberCode exampleOpenAsync(String, Byte, Flags, Int32)
Open an ISO COTP connection.
Public methodStatic memberCode exampleOpenAsync(String, Byte, NotifyDataChangedEventHandler, Int32)
Open an ISO COTP connection.
Public methodStatic memberCode exampleOpenAsync(String, String, Flags, Int32)
Open an ISO COTP connection.
Public methodStatic memberCode exampleOpenAsync(String, String, NotifyDataChangedEventHandler, Int32)
Open an ISO COTP connection.
Public methodStatic memberCode exampleOpenAsync(Boolean, String, Byte, Flags, Int32)
Open an ISO COTP connection.
Public methodStatic memberCode exampleOpenAsync(Boolean, String, Byte, NotifyDataChangedEventHandler, Int32)
Open an ISO COTP connection.
Public methodStatic memberCode exampleOpenAsync(Boolean, String, String, Flags, Int32)
Open an ISO COTP connection.
Public methodStatic memberCode exampleOpenAsync(Boolean, String, String, NotifyDataChangedEventHandler, Int32)
Open an ISO COTP connection.
Top
Remarks
Examples

The following example shows a simple ISO COTP client that connects to a configured server and sends a simple message once per second.

See CotpServer for the implementation of the server that works with this client.

C#
using System;
using System.Collections;
using System.Threading.Tasks;
using Demo3D.IO;
using Demo3D.Native;
using Demo3D.Net;
using Demo3D.Net.Protocols;
using Demo3D.Visuals;

namespace Examples.Net.CotpClientExample {
    [Auto] public class Client {
        [Auto] IBuilder                    app;
        [Auto] PrintDelegate               print;
        [Auto] SimplePropertyValue<string> cotpAddress;  // The hostname to connect to.
        [Auto] SimplePropertyValue<string> cotpTsap;     // The tsap to connect to.

        [Auto] IEnumerable OnInitialize(Visual sender) {
            yield return Connect();
        }

        async Task Connect() {
            Client<IPacketIOService> cotpClient = null;

            try {
                // Connect to the server using the configured cotpAddress and cotpTsap.
                cotpClient = await CotpClient.OpenAsync(sync: false, cotpAddress, cotpTsap);

                // Start sending messages to the server.
                await SendMessages(cotpClient);
            }
            catch (Exception e) {
                // If there's an error, close the connection and report the error.
                cotpClient?.Close(e);
            }
        }

        async Task SendMessages(Client<IPacketIOService> cotpClient) {
            // Send a message to the server once a second while the model is running.
            for (int msg = 0; app.Running; msg++) {
                // Construct a packet.
                var writer = new BufferWriter();
                writer.WriteInt32LE(msg);  // Fill the packet with our message - a 32bit integer.
                var buffer = writer.Resolve();

                // Send the packet data.
                await cotpClient.IO.WriteAsync(buffer);

                // Wait one second.
                await Task.Delay(1000);
            }
        }
    }
}
See Also