Example: /Network/Raw Socket/RawSocket accept

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

/Network/Raw Socket/RawSocket accept


Required plugins for this example: MBS Network Plugin

You find this example project in your Plugins Download as a Xojo project file within the examples folder: /Network/Raw Socket/RawSocket accept

This example is the version from Sun, 15th Sep 2018.

Project "RawSocket accept.xojo_binary_project"
Class App Inherits Application
Const kEditClear = "&Delete"
Const kFileQuit = "&Quit"
Const kFileQuitShortcut = ""
End Class
Class MainWindow Inherits Window
Control List Inherits Listbox
ControlInstance List Inherits Listbox
End Control
EventHandler Sub Open() ServerSocket = new MyServerSocket(MyServerSocket.AddressFamilyINet, MyServerSocket.SocketTypeStream, MyServerSocket.ProtocolTCP) // set options ServerSocket.ReuseAddress = true ServerSocket.ReusePort = true call ServerSocket.Bind(8000) dim e as integer = ServerSocket.Lasterror if e <> 0 then break else log "bound to port "+str(ServerSocket.LocalPort)+" on "+ServerSocket.LocalIP end if ServerSocket.Listen e = ServerSocket.Lasterror if e <> 0 then break else log "Listening..." end if End EventHandler
Property Clients() As MyClientSocket
Property ServerSocket As MyServerSocket
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"
End MenuBar
Class MyServerSocket Inherits RAWSocketMBS
EventHandler Sub DataAvailable() dim a as MyClientSocket do dim RemoteAddress as string dim RemotePort as integer dim c as new MyClientSocket(MyClientSocket.AddressFamilyINet, MyClientSocket.SocketTypeStream, MyClientSocket.ProtocolTCP) dim v as Variant = me.Accept(RemoteAddress, RemotePort, c) a = v if a <> nil then log "Accepted connection from "+RemoteAddress+" on port "+str(RemotePort) MainWindow.Clients.Append a end if loop until a = nil End EventHandler
EventHandler Sub Error() log CurrentMethodName End EventHandler
End Class
Class MyClientSocket Inherits RAWSocketMBS
EventHandler Sub DataAvailable() // read what is coming dim s as string = me.ReadAll log "Received "+str(len(s))+" bytes" // we always answer here wiht HTTP answer dim lines( )as string lines.append "HTTP/1.0 200 OK" lines.append "Date: Sat, 28 Nov 2009 04:36:25 GMT" lines.append "Server: test" lines.append "Connection: close" lines.append "Content-Type: text/plain" lines.Append "" lines.Append "Hello World" dim m as MemoryBlock = Join(lines,EndOfLine.Windows) call me.Send(m, m.size) // close connection, so browser doesn't wait me.Close End EventHandler
EventHandler Sub Error() break End EventHandler
End Class
Module UtilModule
Sub Log(s as string) MainWindow.List.AddRow s End Sub
End Module
End Project

See also:

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


💬 Ask a question or report a problem