Click or drag to resize

TcpConnection Class

Establishes a TCP connection to a device.
Inheritance Hierarchy

Namespace:  Zebra.Sdk.Comm
Assembly:  SdkApi.Core (in SdkApi.Core.dll) Version: 2.15.2634
Syntax
public class TcpConnection : ConnectionA, 
	IpAddressable

The TcpConnection type exposes the following members.

Constructors
  NameDescription
Public methodTcpConnection(String, Int32)
Initializes a new instance of the TcpConnection class.
Public methodTcpConnection(String, Int32, Int32, Int32)
Initializes a new instance of the TcpConnection class.
Top
Properties
  NameDescription
Public propertyAddress
Returns the address which was passed into the constructor.
Public propertyConnected
Returns true if the connection is open.
(Inherited from ConnectionA.)
Public propertyManufacturer
See the classes which implement this property for the format of the printer manufacturer string.
(Inherited from ConnectionA.)
Public propertyMaxDataToWrite
Gets or sets the maximum number of bytes to write at one time
(Inherited from ConnectionA.)
Public propertyMaxTimeoutForRead
Gets or sets the maximum time, in milliseconds, to wait for any data to be received.
(Inherited from ConnectionA.)
Public propertyMultipartTimeToWaitAfterSend
(Inherited from ConnectionA.)
Public propertyPortNumber
Returns the port number which was passed into the constructor.
Public propertySimpleConnectionName
Gets the IP address as the description.
(Overrides ConnectionASimpleConnectionName.)
Public propertyTimeToWaitForMoreData
Gets or sets the maximum time, in milliseconds, to wait in-between reads after the initial read.
(Inherited from ConnectionA.)
Top
Methods
  NameDescription
Public methodAddWriteLogStream
Sets the stream to log the write data to.
(Inherited from ConnectionA.)
Public methodBytesAvailable
Returns an estimate of the number of bytes that can be read from this connection without blocking.
(Overrides ConnectionABytesAvailable.)
Public methodClose
Closes this connection and releases any system resources associated with the connection.
(Inherited from ConnectionA.)
Public methodEquals
Determines whether the specified object is equal to the current object.
(Inherited from Object.)
Public methodGetConnectionReestablisher
Returns a ConnectionReestablisher which allows for easy recreation of a connection which may have been closed.
(Overrides ConnectionAGetConnectionReestablisher(Int64).)
Public methodGetHashCode
Serves as the default hash function.
(Inherited from Object.)
Public methodGetType
Gets the Type of the current instance.
(Inherited from Object.)
Public methodOpen
Opens the connection to a device.
(Inherited from ConnectionA.)
Public methodRead
Reads all the available data from the connection. This call is non-blocking.
(Inherited from ConnectionA.)
Public methodRead(Int32)
Reads maxBytesToRead of the available data from the connection.
(Inherited from ConnectionA.)
Public methodRead(BinaryWriter)
Reads all the available data from the connection.
(Inherited from ConnectionA.)
Public methodRead(Int32, Boolean)
Reads maxBytesToRead of the available data from the connection.
(Inherited from ConnectionA.)
Public methodReadChar
Reads the next byte of data from the connection.
(Inherited from ConnectionA.)
Public methodSendAndWaitForResponse(Byte, Int32, Int32, String)
Sends dataToSend and returns the response data.
(Inherited from ConnectionA.)
Public methodSendAndWaitForResponse(BinaryWriter, BinaryReader, Int32, Int32, String)
Sends data from sourceStream and writes the response data to destinationStream.
(Inherited from ConnectionA.)
Public methodSendAndWaitForValidResponse(Byte, Int32, Int32, ResponseValidator)
Sends dataToSend and returns the response data.
(Inherited from ConnectionA.)
Public methodSendAndWaitForValidResponse(BinaryWriter, BinaryReader, Int32, Int32, ResponseValidator)
Sends data from sourceStream and writes the response data to destinationStream.
(Inherited from ConnectionA.)
Public methodSetReadTimeout
Sets the read timeout on the underlying socket.
(Overrides ConnectionASetReadTimeout(Int32).)
Public methodToString
Returns TCP:[Address]:[PortNumber].
(Overrides ConnectionAToString.)
Public methodWaitForData
Causes the currently executing thread to sleep until BytesAvailable > 0, or for a maximum of maxTimeout milliseconds.
(Inherited from ConnectionA.)
Public methodWrite(Byte)
Writes data.Length bytes from the specified byte array to this output stream.
(Inherited from ConnectionA.)
Public methodWrite(BinaryReader)
Writes all available bytes from the data source to this output stream.
(Inherited from ConnectionA.)
Public methodWrite(Byte, Int32, Int32)
Writes length bytes from data starting at offset.
(Inherited from ConnectionA.)
Top
Fields
  NameDescription
Public fieldStatic memberDEFAULT_CPCL_TCP_PORT
The default TCP port for CPCL devices.
Public fieldStatic memberDEFAULT_ZPL_TCP_PORT
The default TCP port for ZPL devices.
Top
Examples
Desktop
using System;
using System.Text;
using Zebra.Sdk.Comm;
using Zebra.Sdk.Printer;

public class TcpConnectionExample {

    public static void Main(string[] args) {
        new TcpConnectionExample().SendZplOverTcp("1.2.3.4");
        new TcpConnectionExample().SendCpclOverTcp("1.2.3.4");
        new TcpConnectionExample().PrintConfigLabelUsingDnsName("PrinterName");
    }

    private void SendZplOverTcp(string theIpAddress) {
        // Instantiate connection for ZPL TCP port at given address
        Connection thePrinterConn = new TcpConnection(theIpAddress, TcpConnection.DEFAULT_ZPL_TCP_PORT);

        try {
            // Open the connection - physical connection is established here.
            thePrinterConn.Open();

            // This example prints "This is a ZPL test." near the top of the label.
            string zplData = "^XA^FO20,20^A0N,25,25^FDThis is a ZPL test.^FS^XZ";

            // Send the data to printer as a byte array.
            thePrinterConn.Write(Encoding.UTF8.GetBytes(zplData));
        } catch (ConnectionException e) {
            // Handle communications error here.
            Console.WriteLine(e.ToString());
        } finally {
            // Close the connection to release resources.
            thePrinterConn.Close();
        }
    }

    private void SendCpclOverTcp(string theIpAddress) {
        // Instantiate connection for CPCL TCP port at given address
        Connection thePrinterConn = new TcpConnection(theIpAddress, TcpConnection.DEFAULT_CPCL_TCP_PORT);

        try {
            // Open the connection - physical connection is established here.
            thePrinterConn.Open();

            // This example prints "This is a CPCL test." near the top of the label.
            string cpclData = "! 0 200 200 210 1\r\n"
            + "TEXT 4 0 30 40 This is a CPCL test.\r\n"
            + "FORM\r\n"
            + "PRINT\r\n";

            // Send the data to printer as a byte array.
            thePrinterConn.Write(Encoding.UTF8.GetBytes(cpclData));
        } catch (ConnectionException e) {
            // Handle communications error here.
            Console.WriteLine(e.ToString());
        } finally {
            // Close the connection to release resources.
            thePrinterConn.Close();
        }
    }

    private void PrintConfigLabelUsingDnsName(string dnsName) {
        Connection connection = new TcpConnection(dnsName, 9100);
        try {
            connection.Open();
            ZebraPrinter p = ZebraPrinterFactory.GetInstance(connection);
            p.PrintConfigurationLabel();
        } catch (ConnectionException e) {
            Console.WriteLine(e.ToString());
        } catch (ZebraPrinterLanguageUnknownException e) {
            Console.WriteLine(e.ToString());
        } finally {
            // Close the connection to release resources.
            connection.Close();
        }
    }
}
Examples
Android™
using Android.App;
using Android.OS;
using Android.Views;
using Android.Widget;
using System;
using System.Text;
using System.Threading.Tasks;
using Zebra.Sdk.Comm;
using Zebra.Sdk.Printer;

public class TcpConnectionExample : Activity {

    protected override void OnCreate(Bundle savedInstanceState) {
        base.OnCreate(savedInstanceState);

        LinearLayout layout = (LinearLayout)View.Inflate(this, Android.Resource.Layout.ActivityListItem, null);
        layout.Orientation = Orientation.Vertical;

        Button buttonPrint = new Button(this) {
            Text = "Run Tcp Connection Example",
            LayoutParameters = new ViewGroup.LayoutParams(new LinearLayout.LayoutParams(ViewGroup.LayoutParams.WrapContent, ViewGroup.LayoutParams.WrapContent))
        };
        layout.AddView(buttonPrint);

        SetContentView(layout);

        buttonPrint.Click += async (sender, e) => {
            string theIpAddress = "1.2.3.4";
            string dnsName = "PrinterName";

            await Task.Run(() => {
                SendZplOverTcp(theIpAddress);
                SendCpclOverTcp(theIpAddress);
                PrintConfigLabelUsingDnsName(dnsName);
            });
        };
    }

    private void SendZplOverTcp(string theIpAddress) {
        // Instantiate connection for ZPL TCP port at given address
        Connection thePrinterConn = new TcpConnection(theIpAddress, TcpConnection.DEFAULT_ZPL_TCP_PORT);

        try {
            // Open the connection - physical connection is established here.
            thePrinterConn.Open();

            // This example prints "This is a ZPL test." near the top of the label.
            string zplData = "^XA^FO20,20^A0N,25,25^FDThis is a ZPL test.^FS^XZ";

            // Send the data to printer as a byte array.
            thePrinterConn.Write(Encoding.UTF8.GetBytes(zplData));
        } catch (ConnectionException e) {
            // Handle communications error here.
            Console.WriteLine(e.ToString());
        } finally {
            // Close the connection to release resources.
            thePrinterConn.Close();
        }
    }

    private void SendCpclOverTcp(string theIpAddress) {
        // Instantiate connection for CPCL TCP port at given address
        Connection thePrinterConn = new TcpConnection(theIpAddress, TcpConnection.DEFAULT_CPCL_TCP_PORT);

        try {
            // Open the connection - physical connection is established here.
            thePrinterConn.Open();

            // This example prints "This is a CPCL test." near the top of the label.
            string cpclData = "! 0 200 200 210 1\r\n"
            + "TEXT 4 0 30 40 This is a CPCL test.\r\n"
            + "FORM\r\n"
            + "PRINT\r\n";

            // Send the data to printer as a byte array.
            thePrinterConn.Write(Encoding.UTF8.GetBytes(cpclData));
        } catch (ConnectionException e) {
            // Handle communications error here.
            Console.WriteLine(e.ToString());
        } finally {
            // Close the connection to release resources.
            thePrinterConn.Close();
        }
    }

    private void PrintConfigLabelUsingDnsName(string dnsName) {
        Connection connection = new TcpConnection(dnsName, 9100);
        try {
            connection.Open();
            ZebraPrinter p = ZebraPrinterFactory.GetInstance(connection);
            p.PrintConfigurationLabel();
        } catch (ConnectionException e) {
            Console.WriteLine(e.ToString());
        } catch (ZebraPrinterLanguageUnknownException e) {
            Console.WriteLine(e.ToString());
        } finally {
            // Close the connection to release resources.
            connection.Close();
        }
    }
}
Examples
iOS
using CoreGraphics;
using System;
using System.Text;
using System.Threading.Tasks;
using UIKit;
using Zebra.Sdk.Comm;
using Zebra.Sdk.Printer;

public class TcpConnectionExample : UIViewController {

    public TcpConnectionExample(IntPtr handle) : base(handle) {
        UIButton testButton = new UIButton(UIButtonType.System) {
            Frame = new CGRect(25, 25, 300, 150)
        };

        testButton.SetTitle("Run Tcp Connection Example", UIControlState.Normal);

        testButton.TouchUpInside += async (sender, e) => {
            string theIpAddress = "1.2.3.4";
            string dnsName = "PrinterName";

            await Task.Run(() => {
                SendZplOverTcp(theIpAddress);
                SendCpclOverTcp(theIpAddress);
                PrintConfigLabelUsingDnsName(dnsName);
            });
        };

        View.AddSubview(testButton);
    }

    private void SendZplOverTcp(string theIpAddress) {
        // Instantiate connection for ZPL TCP port at given address
        Connection thePrinterConn = new TcpConnection(theIpAddress, TcpConnection.DEFAULT_ZPL_TCP_PORT);

        try {
            // Open the connection - physical connection is established here.
            thePrinterConn.Open();

            // This example prints "This is a ZPL test." near the top of the label.
            string zplData = "^XA^FO20,20^A0N,25,25^FDThis is a ZPL test.^FS^XZ";

            // Send the data to printer as a byte array.
            thePrinterConn.Write(Encoding.UTF8.GetBytes(zplData));
        } catch (ConnectionException e) {
            // Handle communications error here.
            Console.WriteLine(e.ToString());
        } finally {
            // Close the connection to release resources.
            thePrinterConn.Close();
        }
    }

    private void SendCpclOverTcp(string theIpAddress) {
        // Instantiate connection for CPCL TCP port at given address
        Connection thePrinterConn = new TcpConnection(theIpAddress, TcpConnection.DEFAULT_CPCL_TCP_PORT);

        try {
            // Open the connection - physical connection is established here.
            thePrinterConn.Open();

            // This example prints "This is a CPCL test." near the top of the label.
            string cpclData = "! 0 200 200 210 1\r\n"
            + "TEXT 4 0 30 40 This is a CPCL test.\r\n"
            + "FORM\r\n"
            + "PRINT\r\n";

            // Send the data to printer as a byte array.
            thePrinterConn.Write(Encoding.UTF8.GetBytes(cpclData));
        } catch (ConnectionException e) {
            // Handle communications error here.
            Console.WriteLine(e.ToString());
        } finally {
            // Close the connection to release resources.
            thePrinterConn.Close();
        }
    }

    private void PrintConfigLabelUsingDnsName(string dnsName) {
        Connection connection = new TcpConnection(dnsName, 9100);
        try {
            connection.Open();
            ZebraPrinter p = ZebraPrinterFactory.GetInstance(connection);
            p.PrintConfigurationLabel();
        } catch (ConnectionException e) {
            Console.WriteLine(e.ToString());
        } catch (ZebraPrinterLanguageUnknownException e) {
            Console.WriteLine(e.ToString());
        } finally {
            // Close the connection to release resources.
            connection.Close();
        }
    }
}
See Also