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.


The biggest plugin in space...