Hi All
I have created a simple socket class for a project we a doing. Thought I might share it. Hopefully it will be of use to others.
Regards
John.
I have created a simple socket class for a project we a doing. Thought I might share it. Hopefully it will be of use to others.
Regards
John.
B4X:
Type=Class
Version=2.71
@EndOfDesignText@
'Class module
Sub Class_Globals
Private callback As Object
Private event As String
Dim WS_SOCKET As Socket
Dim WS_IO_ASTREAM As AsyncStreams
End Sub
'Initializes the object. You can add parameters to this method if needed.
Public Sub Initialize(callBackModule As Object,callBackEvent As String)
callback = callBackModule
event = callBackEvent
WS_SOCKET.Initialize("ws_socket")
End Sub
Sub ws_socket_Connected(Connected As Boolean)As Boolean
Try
If Connected = True Then
If Not(WS_IO_ASTREAM.IsInitialized ) Then
WS_IO_ASTREAM.Initialize(WS_SOCKET.InputStream,WS_SOCKET.OutputStream,"wsStream")
End If
Log(DateTime.Time(DateTime.now) & " *** sockets::ws_socket_Connected(" & callback & ") " & Connected)
Else
If SubExists(callback, event & "_failure") Then
CallSub2(callback, event & "_failure",LastException.Message)
End If
End If
If SubExists(callback, event & "_Connected") Then
CallSub2(callback, event & "_Connected",Connected)
End If
Catch
Log(DateTime.Time(DateTime.now) & " *** sockets::ws_socket_Connected(" & callback & ") " & LastException.Message )
If SubExists(callback, event & "_socket_failure") Then
CallSub2(callback, event & "_failure",LastException.Message)
End If
End Try
Return Connected
End Sub
Sub wsStream_NewData (Buffer() As Byte)
Dim wsData As String
wsData = BytesToString(Buffer, 0, Buffer.Length, "ASCII")
If SubExists(callback, event & "_DataArrival") Then
CallSub2(callback, event & "_DataArrival",wsData)
End If
End Sub
Sub wsStream_Terminated()
ws_close
End Sub
Sub ws_connect(pHost As String, pPort As Int, pTimeout As Int)
If Not(WS_SOCKET.IsInitialized) Then
WS_SOCKET.Initialize("ws_socket")
End If
Log(DateTime.Time(DateTime.now) & " *** sockets::ws_connect(" & pHost & ":" & pPort & ")")
WS_SOCKET.Connect(pHost,pPort,pTimeout)
End Sub
Sub ws_close()
If WS_SOCKET.Connected Then
WS_SOCKET.Close
Log(DateTime.Time(DateTime.now) & " *** sockets::ws_close(" & callback & ")")
End If
End Sub
Sub ws_isConnected() As Boolean
Return WS_SOCKET.Connected
End Sub
Sub ws_isInitialised() As Boolean
Return WS_SOCKET.IsInitialized
End Sub
Sub ws_senddata(pData As String)
Dim Buffer() As Byte
If Not(ws_isConnected) Then
Return
End If
Try
If Not(WS_IO_ASTREAM.IsInitialized) Then
Log(DateTime.Time(DateTime.now) & " *** sockets::ws_senddata() WS_IO_ASTREAM.Initialize")
WS_IO_ASTREAM.Initialize(WS_SOCKET.InputStream,WS_SOCKET.OutputStream,"wsStream")
End If
Buffer = pData.GetBytes("UTF8")
If Not(WS_IO_ASTREAM.Write(Buffer)) Then
Log(DateTime.Time(DateTime.now) & " *** sockets::ws_senddata() WS_IO_ASTREAM.write failed")
If SubExists(callback, event & "_failure") Then
CallSub2(callback, event & "_failure",LastException.Message)
End If
End If
Catch
Log(LastException.Message)
End Try
End Sub
Attachments
Last edited: