Example: /MacFrameworks/NSNetService/NSNetService iOS/Desktop App

Online Documentation   -   Statistics   -   FAQ   -   Plugin Parts (All, Dependencies)   -   Class hierarchy

New in Version 22.2 22.3 22.4 22.5 23.0 23.1 23.2 23.3 23.4 23.5 24.0 24.1

The list of the   topics,   classes,   interfaces,   controls,   modules,   global methods by category,   global methods by name,   screenshots,   licenses   and   examples.

Platforms to show: All Mac Windows Linux Cross-Platform

/MacFrameworks/NSNetService/NSNetService iOS/Desktop App


You find this example project in your Plugins Download as a Xojo project file within the examples folder: /MacFrameworks/NSNetService/NSNetService iOS/Desktop App

This example is the version from Sun, 13th May 2023.

Project "Desktop App.xojo_binary_project"
Class App Inherits DesktopApplication
Const kEditClear = "&Delete"
Const kFileQuit = "&Quit"
Const kFileQuitShortcut = ""
End Class
Class MainWindow Inherits DesktopWindow
Control List Inherits DesktopListBox
ControlInstance List Inherits DesktopListBox
End Control
Control ServiceNameField Inherits DesktopTextField
ControlInstance ServiceNameField Inherits DesktopTextField
EventHandler Sub TextChanged() MyServerSocket.ServiceName = me.Text End EventHandler
End Control
EventHandler Sub Opening() MyServerSocket.ServiceName = ServiceNameField.Text StartServer AdvertiseService End EventHandler
Sub AdvertiseService() Const domain = "" // default Const type = "_test._tcp." Const name = "MyTestService" Dim port As Integer = ServerSocket.port Service = New MyNetService(domain, type, name, port) Service.publish End Sub
Sub StartServer() ServerSocket = New MyServerSocket ServerSocket.MinimumSocketsAvailable = 3 ServerSocket.Listen System.DebugLog "Waiting on port "+ServerSocket.Port.ToString End Sub
Property ServerSocket As MyServerSocket
Property Service As MyNetService
End Class
MenuBar MainMenuBar
MenuItem FileMenu = "&File"
MenuItem FileQuit = "#App.kFileQuit"
MenuItem EditMenu = "&Edit"
MenuItem EditUndo = "&Undo"
MenuItem EditSeparator1 = "-"
MenuItem EditCut = "Cu&t"
MenuItem EditCopy = "&Copy"
MenuItem EditPaste = "&Paste"
MenuItem EditClear = "#App.kEditClear"
MenuItem EditSeparator2 = "-"
MenuItem EditSelectAll = "Select &All"
MenuItem HelpMenu = "&Help"
End MenuBar
Class MyServerSocket Inherits ServerSocket
EventHandler Function AddSocket() As TCPSocket Dim t As New MySocket Return t End EventHandler
EventHandler Sub Error(ErrorCode As Integer, err As RuntimeException) System.DebugLog CurrentMethodName+": "+ErrorCode.ToString End EventHandler
Property Shared ServiceName As String
End Class
Class MySocket Inherits TCPSocket
EventHandler Sub Connected() System.DebugLog CurrentMethodName // let's send a greeting. In general you have to think about the protocol you like to use. // we pick JSON packets Dim j As New JSONItem j.Value("ServiceName") = MyServerSocket.ServiceName j.Value("Version") = app.Version Send j End EventHandler
EventHandler Sub DataAvailable() System.DebugLog CurrentMethodName Dim buf As String = Me.ReadAll buffer = buffer + buf Dim Delimiter As String = "}"+EndOfLine.UNIX Dim pos As Integer = buffer.IndexOf(Delimiter) While pos >= 0 Dim packet As String = buffer.Left(pos+1) Process packet buffer = buffer.Middle(pos+2) pos = buffer.IndexOf(Delimiter) Wend End EventHandler
EventHandler Sub Error(err As RuntimeException) System.DebugLog CurrentMethodName+": "+err.ErrorNumber.ToString Break End EventHandler
Sub Process(Packet as string) Dim j As New JSONItem(Packet) If j.HasKey("Message") Then Dim s As String = j.Value("Message") dim now as new date MainWindow.List.AddRow s, now.SQLDateTime End If End Sub
Sub Send(j as JSONItem) Me.Write j.ToString Me.Write EndOfLine.UNIX // we send EndOfLine, so we can watch on other side for } + endofline as delimiter End Sub
Property Buffer As string
End Class
Class MyNetService Inherits NSNetServiceMBS
EventHandler Sub DidNotPublish(Error as Dictionary) Dim ErrorCode As Integer = error.Lookup(NSNetServicesErrorCode, "") 'Dim errorDomain As String = error.Lookup(NSNetServicesErrorDomain, "") System.DebugLog CurrentMethodName+": "+ErrorCode.ToString End EventHandler
EventHandler Sub DidPublish() System.DebugLog CurrentMethodName End EventHandler
EventHandler Sub DidStop() System.DebugLog CurrentMethodName End EventHandler
EventHandler Sub WillPublish() System.DebugLog CurrentMethodName End EventHandler
End Class
End Project

See also:

The items on this page are in the following plugins: MBS MacFrameworks Plugin.


💬 Ask a question or report a problem