#Region Project Attributes
#MainFormWidth: 600
#MainFormHeight: 600
#End Region
Sub Process_Globals
Private fx As JFX
Private MainForm As Form
Dim Server As ServerSocket
Type ClientConn (Clip As String, Clname As String, connected As String)
Dim connections As Map
Dim slots As List
End Sub
Sub AppStart (Form1 As Form, Args() As String)
MainForm = Form1
'MainForm.RootPane.LoadLayout("Layout1") 'Load the layout file.
slots.Initialize
connections.Initialize
Server.Initialize(5251, "Server")
Server.Listen
MainForm.Show
End Sub
Sub Server_NewConnection (Successful As Boolean, NewSocket As Socket)
If Successful Then
Dim AStreams As AsyncStreamsText
Dim newclient As ClientConn
Log("Connected")
AStreams.Initialize(Me, "AStreams", NewSocket.InputStream, NewSocket.OutputStream)
newclient.Clip = NewSocket.RemoteAddress
newclient.connected = DateTime.Time(DateTime.Now)
connections.Put(AStreams, newclient)
Else
Log(LastException.Message)
End If
Server.Listen
End Sub
Public Sub NewData (data As String)
Log(data)
End Sub
Sub AStreams_NewText(Text As String)
NewData(Text)
End Sub
Public Sub SendData (data As String)
Dim astreams As AsyncStreamsText = Sender
astreams.Write(data)
End Sub
Sub AStreams_Error
Log(LastException.Message)
Log("AStreams_Error")
End Sub
Sub AStreams_Terminated
Dim astream As AsyncStreamsText = Sender
Dim newclient As ClientConn = connections.Get(astream)
Log(newclient.connected)
ReleaseSlot(astream)
astream.Close
Log("AStreams_Terminated")
End Sub
Private Sub ReleaseSlot(astream As AsyncStreamsText)
If connections.ContainsKey(astream) Then
connections.Remove(astream)
End If
End Sub
'Return true to allow the default exceptions handler to handle the uncaught exception.
Sub Application_Error (Error As Exception, StackTrace As String) As Boolean
Return True
End Sub