How do I send binary data over the network using VB?

You will need to send data via byte arrays.

All properties of ActiveX controls are Unicode, with 16 bit wide characters, on the other side TCP/IP specifications are for byte streams.

The new version of IPWorks toolkit provides byte-array properties for all data sending properties such as DataToSend, EOL etc. The names of these byte array properties are derived from the base property by appending a 'B' such as DataToSendB, EOLB etc.

An example of use would be:

Dim A(0:5) as Byte 'remember to dim explicitly "0 to len-1" For i=0 to 5 a(i) = chr(127+i) next i IPPort1.DataToSendB = A

A similar problem arises when receiving data. In that case there's ONLY ONE byte-array property called DataInB property. It's the same name across all controls. The property is valid only inside the event. An example of use would be the following:

Private Sub IPDaemon1_DataIn(ConnectionId As Integer, Text As String, EOL As Boolean) ' the Text parameter contains the received data which, sometimes, ' may have been converted incorrectly -- especially in Unicode environments. ' the DataInB property has always the correct bytes. Dim A() As Variant ' get the array's value when you first enter the event. -- VERY Important with IPDaemon A = IPDaemon1.DataInTextB 'only now you may manipulate it ... Debug.Print Text For I = LBound(A) To UBound(A) Debug.Print A(I) Next I End Sub

We appreciate your feedback.  If you have any questions, comments, or suggestions about this article please contact our support team at kb@nsoftware.com.