Topics   All   MacOS (Only)   Windows (Only)   Linux (Only, Not)   iOS (Only, Not)  
Components   Crossplatform Mac & Win   Server   Client   Old   Deprecated   Guides   Examples   Videos
New in version: 10.2   10.3   10.4   10.5   11.0   11.1   11.2   11.3   11.4   11.5    Statistic    FMM    Blog  


Reads bytes from socket and returns them as text.

Component Version macOS Windows Linux Server iOS SDK
Socket 3.1 ✅ Yes ✅ Yes ✅ Yes ✅ Yes ✅ Yes
MBS( "Socket.Read"; SocketID; length { ; Encoding } )   More


Parameter Description Example Flags
SocketID The socket ID received by Socket.Connect function. $sock
length Maximum number of bytes to read. 10
Encoding The text encoding for result.
Default is native. This function can also handle UTF-16 as well as UTF-16LE and UTF-16BE for little/big endian byte order.
Possible encoding names: ANSI, ISO-8859-1, Latin1, Mac, Native, UTF-8, DOS, Hex, Base64 or Windows. More listed in the FAQ.
UTF8 Optional


Returns text or error message.


Reads bytes from socket and returns them as text.
The text returned may be shorter than length bytes.

The buffer size of the socket is managed by the OS and can be several megabytes big if needed.
To read the whole input buffer, use Socket.ReadAll. To look into buffer without removing text, please use Socket.Peek function instead.


Read up to 8 bytes and decode them from Windows text encoding into FileMaker:

$value = MBS( "Socket.Read"; $sock; 8; "windows" )

Connect to a HTTP Server and wait for answer:

Set Variable [$r; Value:MBS("Trace")]
Set Variable [$sock; Value:MBS("Socket.Connect"; TCP Socket::DomainOrIP; 80)]
If [MBS("IsError")]
    Show Custom Dialog ["Error"; $sock]
    Exit Script []
End If
Set Variable [$request; Value:"GET "&TCP Socket::Path&" HTTP/1.0¶Host: "&TCP Socket::DomainOrIP&"¶¶"]
Set Variable [$request; Value:MBS("Text.ReplaceNewline"; $request; 2)]
Set Field [TCP Socket::RequestUsed; $request]
Set Variable [$r; Value:MBS("Socket.Write"; $sock; $request)]
Pause/Resume Script [Duration (seconds): 1]
Set Variable [$data; Value:MBS("Socket.Read"; $sock; 1000)]
Set Variable [$data; Value:MBS("Text.ReplaceNewline"; $data; 1)]
Set Field [TCP Socket::Result; $data]
Set Variable [$r; Value:MBS("Socket.Close"; $sock)]

Read data and put in a new record:

Set Variable [$r; Value:MBS("Socket.Read"; $$sock; 1500; "UTF-8")]
If [MBS("IsError")]
    Show Custom Dialog ["Error Reading"; $r]
Else If [Length($r) = 0]
    Show Custom Dialog ["Error Reading"; "No data available."]
    New Record/Request
    Set Field [UDP Broadcast::Message Received; $r]
    Set Field [UDP Broadcast::Sender; MBS("Socket.LastMessageIP"; $$sock)]
    Commit Records/Requests [No dialog]
End If

See also

Release notes

Example Databases

Blog Entries

Created 18th August 2014, last changed 15th February 2019

Socket.PeekHex - Socket.ReadAll

Feedback: Report problem or ask question.

MBS FileMaker tutorial videos

Start Chat