PowerTCP Mail for .NET
EndSend Event
See Also  Example Send comments on this topic.
Dart.PowerTCP.Mail Namespace > Tcp Class : EndSend Event




Raised when the Tcp.BeginSend request completes.

Syntax

Visual Basic (Declaration) 
<CategoryAttribute("Connection")>
<DescriptionAttribute("Raised when the BeginSend() request completes")>
Public Event EndSend As SegmentEventHandler
Visual Basic (Usage)Copy Code
Dim instance As Tcp
Dim handler As SegmentEventHandler
 
AddHandler instance.EndSend, handler
C# 
[CategoryAttribute("Connection")]
[DescriptionAttribute("Raised when the BeginSend() request completes")]
public event SegmentEventHandler EndSend
Managed Extensions for C++ 
[CategoryAttribute("Connection")]
[DescriptionAttribute("Raised when the BeginSend() request completes")]
public: __event SegmentEventHandler* EndSend
C++/CLI 
[CategoryAttribute("Connection")]
[DescriptionAttribute("Raised when the BeginSend() request completes")]
public:
event SegmentEventHandler^ EndSend

Event Data

The event handler receives an argument of type SegmentEventArgs containing data related to this event. The following SegmentEventArgs properties provide information specific to this event.

PropertyDescription
Exception Gets any exception which occurred during the asynchronous operation.
Segment The Segment object referencing the data that was sent or received.
State Gets the object that was included as part of the associated method call.

Example

The following example demonstrates asynchronous receiving and sending of data.
Visual BasicCopy Code
Private Sub AsynchTcpDemo()

   ' Attempt to connect to an echo port.
   Try
      Tcp1.Connect("myserver", 7)
   Catch ex As Exception
      Return
   End Try

   ' Send data, since we are connected to an echo port, the same data should be returned.
   ' The following code demonstrates asynchronously sending data. When data has been sent
   ' the EndSend event will be raised.

   Dim buffer() As Byte = System.Text.Encoding.Default.GetBytes("a")
   Tcp1.BeginSend(buffer, 0, buffer.Length, Net.Sockets.SocketFlags.None, Nothing)
End Sub

Private Sub Tcp1_EndSend(ByVal sender As Object, ByVal e As Dart.PowerTCP.SegmentEventArgs) Handles Tcp1.EndSend
   ' Check for exception
   If e.Exception Is Nothing Then

      ' Send is complete. Display info about the data sent.
      Debug.WriteLine("Byte count sent: " + e.Segment.Count)
      Debug.WriteLine("Data sent: " + e.Segment.ToString())
      
      Dim buffer(Tcp1.ReceiveBufferSize) As Byte

      ' Receive the data. The EndReceive event will be raised upon completion.
      Tcp1.BeginReceive(buffer, 0, buffer.Length, Net.Sockets.SocketFlags.None, Nothing)
    
    End If
End Sub

Private Sub Tcp1_EndReceive(ByVal sender As Object, ByVal e As Dart.PowerTCP.SegmentEventArgs) Handles Tcp1.EndReceive
   ' Check for exception
   If e.Exception Is Nothing Then

      ' Receive is complete. Display info about the data sent.
      Debug.WriteLine("Byte count received: " + e.Segment.Count)
      Debug.WriteLine("Data received: " + e.Segment.ToString())

      ' Close the connection
      Tcp1.Close()
    End If
End Sub
C#Copy Code
private void AsynchTcpDemo()
{
    // Attempt to connect to an echo port.
    try
    {
        tcp1.Connect("myserver", 7);
    }
    catch(Exception ex)
    {return;}

    // Send data, since we are connected to an echo port, the same data should be returned.
    // The following code demonstrates asynchronously sending data. When data has been sent
    // the EndSend event will be raised.

    byte[] buffer = System.Text.Encoding.Default.GetBytes("a");
    tcp1.BeginSend(buffer, 0, buffer.Length, System.Net.Sockets.SocketFlags.None, null);
}

private void tcp1_EndSend(object sender, Dart.PowerTCP.SegmentEventArgs e)
{
    // Check for exception
    if(e.Exception == null)
    {
        // Send is complete. Display info about the data sent.
        Debug.WriteLine("Byte count sent: " + e.Segment.Count);
        Debug.WriteLine("Data sent: " + e.Segment.ToString());
                

        byte[] buffer = new byte[tcp1.ReceiveBufferSize];
                    
        // Receive the data. The EndReceive event will be raised upon completion.
        tcp1.BeginReceive(buffer, 0, buffer.Length, System.Net.Sockets.SocketFlags.None, null);
    }
}

private void tcp1_EndReceive(object sender, Dart.PowerTCP.SegmentEventArgs e)
{
    // Check for exception
    if(e.Exception == null)
    {
        // Receive is complete. Display info about the data sent.
        Debug.WriteLine("Byte count received: " + e.Segment.Count);
        Debug.WriteLine("Data received: " + e.Segment.ToString());

        // Close the connection
        tcp1.Close();
    }
}

Remarks

This event is raised when the asynchronous method call Tcp.BeginSend completes. A SegmentEventArgs object is passed into the event, containing information about the event, such as the data sent.

If any errors occurred during the asynchronous operation, they would be returned in the SegmentEventArgs object, check SegmentEventArgs.Exception to check for any exception.

For more information on using events using PowerTCP.NET within the Visual Studio.NET environment, see the topic, Using Events In PowerTCP.

If you are using the Tcp component as a reference, you must create a method to handle the event yourself.

This event MUST be implemented if you are using the Tcp.BeginSend method.

Requirements

Target Platforms: Microsoft .NET Framework 2.0

See Also

Documentation Version 3.2
© 2010 Dart Communications. All Rights Reserved.