Platforms to show: All Mac Windows Linux Cross-Platform

RAWSocketMBS class

Type Topic Plugin Version macOS Windows Linux iOS Targets
class Network MBS Network Plugin 17.4 ✅ Yes ✅ Yes ✅ Yes ✅ Yes All
A class for low level and raw sockets.
Example
Var sock as RAWSocketMBS

// create UDP socket
sock = new RAWSocketMBS(RAWSocketMBS.AddressFamilyINet, RAWSocketMBS.SocketTypeDatagram, RAWSocketMBS.ProtocolUDP)

Similar to Xojo's built in Socket class, but more low level and with more options.
Raw sockets for things like PING may need root permissions.

For macOS and iOS, your application may need to have the NSLocalNetworkUsageDescription in info.plist for local network access and your sandboxed application may need need the com.apple.security.network.client entitlement.

  • 3 events
  • 15 properties
  • 18 methods
    • method Accept(byref RemoteAddress as String, byref RemotePort as Integer, NewSocket as RAWSocketMBS) as RAWSocketMBS
    • method Bind(DestAddr as Ptr, DestAddrByteSize as Integer) as Boolean
    • method Bind(Port as Integer, IP as string = "")
    • method Close
    • method Connect(Address as String, Port as Integer, byref ErrorMessage as String) as Boolean
    • method Connect(DestAddr as Ptr, DestAddrByteSize as Integer) as Boolean
    • method Constructor(AddressFamily as Integer, SocketType as Integer, Protocol as Integer)
    • method Destructor
    • method Listen(BackLog as Integer = 2)
    • method Poll
    • method Read(ByteSize as Integer, peek as boolean = false) as MemoryBlock
    • method ReadAll(peek as boolean = false) as MemoryBlock
    • method ReadDatagram(peek as boolean = false) as DatagramMBS
    • method Send(Data as Ptr, DataByteSize as Integer, Flags as Integer = 0) as Integer
    • method SendMessage(Data as DatagramMBS) as Integer
    • method SendMessage(Data as MemoryBlock, IP as String, Port as Integer) as Integer
    • method SendMessage(Data as string, IP as String, Port as Integer) as Integer
    • method SendTo(Data as Ptr, DataByteSize as Integer, Flags as Integer, DestAddr as Ptr, DestAddrByteSize as Integer) as Integer
  • 8 shared methods
    • shared method AddressFamilyINet6 as Integer
    • shared method CalcChecksum(data as ptr, ByteCount as Integer) as UInt16
    • shared method htonl(value as UInt32) as UInt32
    • shared method htons(value as UInt16) as UInt16
    • shared method inet_addr(IPv4 as String) as UInt32
    • shared method inet_ntoa(IPv4 as UInt32) as String
    • shared method ntohl(value as UInt32) as UInt32
    • shared method ntohs(value as UInt16) as UInt16
  • 10 constants

Address Families

Constant Value Description
AddressFamilyINet 2 IPv4

Protocols

Constant Value Description
ProtocolICMP 1 ICMP
ProtocolIP 0 IPv4
ProtocolIPv6 41 IPv6
ProtocolRaw 255 Raw protocol
ProtocolTCP 6 TCP
ProtocolUDP 17 UDP

Socket Types

Constant Value Description
SocketTypeDatagram 2 Datagram, e.g. UDP.
SocketTypeRaw 3 Raw socket, requires root permissions.
SocketTypeStream 1 Stream socket, e.g. TCP/IP.

This class has no sub classes.

Blog Entries

Xojo Developer Magazine

Videos

Release notes

Some examples using this class:

Some related classes:


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


RaspberryPiCameraMBS   -   RC4MBS


The biggest plugin in space...