0% found this document useful (0 votes)
48 views

Create TCP - IP Server - MATLAB - MathWorks India

The document describes a tcpserver object in MATLAB that allows creation of a TCP/IP server. A tcpserver object listens for client connection requests on a specific IP address and port. It supports properties and functions for accepting connections, reading/writing data, and setting callbacks to handle events like new data or errors. Key properties include ServerAddress, ServerPort, Connected, and Callback functions.

Uploaded by

Alok Pandey
Copyright
© © All Rights Reserved
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
48 views

Create TCP - IP Server - MATLAB - MathWorks India

The document describes a tcpserver object in MATLAB that allows creation of a TCP/IP server. A tcpserver object listens for client connection requests on a specific IP address and port. It supports properties and functions for accepting connections, reading/writing data, and setting callbacks to handle events like new data or errors. Key properties include ServerAddress, ServerPort, Connected, and Callback functions.

Uploaded by

Alok Pandey
Copyright
© © All Rights Reserved
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 12

tcpserver

Create TCP/IP server


Since R2021a

Description
A tcpserver object represents a TCP/IP server that receives a TCP/IP client connection request from the specified IP
address and port number and accepts the request. Once the server establishes a connection, you can receive data from
and send data to the client using read and write functions. Each tcpserver object supports only one client connection
at a time.

Creation
Syntax

t = tcpserver(address,port)
t = tcpserver(port)
t = tcpserver( ___ ,Name,Value)

Description

t = tcpserver(address,port) creates a TCP/IP server that listens for a TCP/IP client example
connection request at the IP address specified by address and the port number specified by port.

The input argument address sets the ServerAddress property and the input argument port sets
the ServerPort property.

example
t = tcpserver(port) creates a TCP/IP server that listens for a client connection request at port
number port and IP address "::". This IP address indicates that the server accepts a client
connection from any valid IP address on the machine.

example
t = tcpserver( ___ ,Name,Value) creates a TCP/IP server and sets additional Properties using
one or more name-value pair arguments. Set the Timeout, ByteOrder, and
ConnectionChangedFcn properties using name-value pair arguments. After any of the input
argument combinations in the previous syntaxes, enclose each property name in quotes, followed by
the property value.

For example, t = tcpserver(4000,"Timeout",20,"ByteOrder","big-endian") creates a


TCP/IP server that listens for connections on port 4000 at the IP address "::". It sets the timeout
period to 20 seconds and the byte order to big-endian.

Properties collapse all

Object Creation Properties

ServerAddress — IP address where server listens


 "::" (default) | character vector | string scalar

IP address where the server listens for TCP/IP client connections, specified as a character vector or string scalar.
You can set this property to any valid IPV4 address, IPV6 address, or host name of the machine. This property can
be set only at object creation.
Example: t = tcpserver("144.212.100.10",4000) listens for connections at port 4000 and IP address
144.212.100.10.

 Note
If you specify a host name at object creation, tcpserver resolves it to an IPV4 or IPV6 address and sets
ServerAddress to the resolved IP address.

Data Types: char | string

ServerPort — Port number where server listens


 numeric

Port number where the server listens for TCP/IP client connections, specified as a number between 1 and 65535,
inclusive. This property can be set only at object creation.

Example: t = tcpserver("144.212.100.10",4000) listens for connections at port 4000 and IP address


144.212.100.10.

Data Types: double

Timeout — Allowed time to complete read and write operations


 10 (default) | numeric

Allowed time in seconds to complete read and write operations, specified as a numeric value. Set this property at
object creation using a name-value pair argument. You can also change it after object creation using dot notation.

Example: t = tcpserver("144.212.100.10",4000,"Timeout",20) sets the read/write timeout period to


20 seconds.

Data Types: double

ByteOrder — Sequential order of bytes


 "little-endian" (default) | "big-endian"

Sequential order in which bytes are arranged into larger numerical values, specified as "little-endian" or
"big-endian". This only applies for the following numeric data types: uint16, int16, uint32, int32, uint64,
int64, single, and double. Set this property at object creation using a name-value pair argument. You can also
change it after object creation using dot notation.

Example: t = tcpserver("144.212.100.10",4000,"ByteOrder","big-endian") sets the byte order to


big-endian.

Data Types: char | string


ConnectionChangedFcn — Callback function triggered by connection or disconnection event
 function handle

Callback function triggered by connection or disconnection event, specified as a function handle. A connection or
disconnection event occurs when a TCP/IP client connects to or disconnects from the server. Set this property at
object creation using a name-value pair argument. You can also change it after object creation using dot notation.
This property is empty until you assign a function handle.

Example: t = tcpserver("144.212.100.10",4000,"ConnectionChangedFcn",@myConnectionFcn)
sets the connection callback function to myConnectionFcn. When a client connects or disconnects,
myConnectionFcn triggers.

Data Types: function_handle

Connection Properties

Connected — Server connection status


 false or 0 (default) | true or 1

This property is read-only.

Server connection status, returned as a numeric or logical 1 (true) or 0 (false). If the value of this property is
true, a TCP/IP client is connected to the server.

You can connect to only one client at a time. If a client disconnects from the server, you can connect to another
client immediately.

Data Types: logical

ClientAddress — IP address of connected client


 "" (default) | string scalar

This property is read-only.

IP address of the connected client, returned as a string. The value of this property matches the IP address of the
client. The value of this property is empty until a TCP/IP client establishes a connection to the server. If a client
disconnects from the server, the value of this property becomes empty.

Example: t.ClientAddress returns the IP address of the connected client.

Data Types: string

ClientPort — Port number of connected client


 [] (default) | numeric

This property is read-only.


Port number of the connected client, returned as a double. The value of this property is empty until a TCP/IP client
establishes a connection to the server.

Example: t.ClientPort returns the port number of the connected client.

Data Types: double

Read and Write Properties

Terminator — Terminator character for data


 "LF" (default) | "CR" | "CR/LF" | 0 to 255

Terminator character for reading and writing ASCII-terminated data, returned as "LF", "CR", "CR/LF", or a
numeric integer from 0 to 255, inclusive. If the read and write terminators are different, Terminator is returned as
a 1x2 cell array of these values. Set this property with the configureTerminator function.

Example: configureTerminator(t,"CR") sets both the read and write terminators to "CR".

Example: configureTerminator(t,"CR",10) sets the read terminator to "CR" and the write terminator to 10.

Data Types: double | char | string

NumBytesAvailable — Number of bytes available to read


 0 (default) | numeric

This property is read-only.

Number of bytes available to read, returned as a numeric value.

Example: t.NumBytesAvailable returns the number of bytes available to read.

Data Types: double

NumBytesWritten — Total number of bytes written


 0 (default) | numeric

This property is read-only.

Total number of bytes written, returned as a numeric value. The value of this property does not reset to 0 when a
client disconnects or reconnects to the server.

Example: t.NumBytesWritten returns the number of bytes written.

Data Types: double


Callback Properties

BytesAvailableFcnMode — Bytes available callback trigger mode


 "off" (default) | "byte" | "terminator"

Bytes available callback trigger mode, returned as "off", "byte", or "terminator". This setting determines if
the callback is off, triggered by the number of bytes specified by BytesAvailableFcnCount, or triggered by the
terminator specified by Terminator. Set this property with the configureCallback function.

Example: configureCallback(t,"byte",50,@callbackFcn) sets the callbackFcn callback to trigger


each time 50 bytes of new data are available to be read.

Example: configureCallback(t,"terminator",@callbackFcn) sets the callbackFcn callback to trigger


when a terminator is available to be read.

Example: configureCallback(t,"off") turns off callbacks.

Data Types: char | string

BytesAvailableFcnCount — Number of bytes of data to trigger callback


 64 (default) | numeric

Number of bytes of data to trigger the callback specified by BytesAvailableFcn, returned as a double. This
value is used only when the BytesAvailableFcnMode property is "byte". Set these properties with the
configureCallback function.

Example: configureCallback(t,"byte",50,@callbackFcn) sets the callbackFcn callback to trigger


each time 50 bytes of new data are available to be read.

Data Types: double

BytesAvailableFcn — Callback function triggered by bytes available event


 function handle

Callback function triggered by a bytes available event, returned as a function handle. A bytes available event is
generated by receiving a certain number of bytes or a terminator. This property is empty until you assign a function
handle. Set this property with the configureCallback function.

Example: configureCallback(t,"byte",50,@callbackFcn) sets the callbackFcn callback to trigger


each time 50 bytes of new data are available to be read.

Data Types: function_handle

ErrorOccurredFcn — Callback function triggered by error event


 function handle
Callback function triggered by an error event, returned as a function handle. An error event is generated when the
network connection for the server is interrupted or lost. This property is empty until you assign a function handle.

Example: t.ErrorOccurredFcn = @myErrorFcn

Data Types: function_handle

UserData — General purpose property for user data


 any type

General purpose property for user data, returned as any MATLAB® data type. For example, you can use this
property to store data from a callback function.

Example: t.UserData

Object Functions
read Read data sent to TCP/IP server

readline Read line of ASCII string data sent to TCP/IP server

readbinblock Read one binblock of data sent to TCP/IP server

write Write data from TCP/IP server

writeline Write line of ASCII data from TCP/IP server

writebinblock Write one binblock of data from TCP/IP server

configureTerminator Set terminator for ASCII string communication

configureCallback Set callback function and trigger condition for communication

flush Clear buffers for communication using TCP/IP server

Examples collapse all

 Create TCP/IP Server that Listens at IP Address and Port Number

Create a TCP/IP server called t that listens for connections at your machine's IP address and port 4000. Your IP
address is different from the one in this example. It must be any valid IPV4 address, IPV6 address, or host name of
the adapter on the machine.

t = tcpserver("172.28.200.145",4000)  Get
t =
TCPServer with properties:

ServerAddress: "172.28.200.145"
ServerPort: 4000
Connected: 0
ClientAddress: ""
ClientPort: []
NumBytesAvailable: 0

Show all properties, functions

The values of the Connected, ClientAddress, and ClientPort properties indicate that a TCP/IP client is not
connected to the server.

 Create TCP/IP Server that Listens at Port Number

Create a TCP/IP server called t that listens for connections at all IP addresses and port 4000.

t = tcpserver(4000)  Get

t =
TCPServer with properties:

ServerAddress: "::"
ServerPort: 4000
Connected: 0
ClientAddress: ""
ClientPort: []
NumBytesAvailable: 0

Show all properties, functions

The values of the Connected, ClientAddress, and ClientPort properties indicate that a TCP/IP client is not
connected to the server.

 Create TCP/IP Server and Set Timeout Period

Create a TCP/IP server called t and set the read and write timeout period to 20 seconds.

t = tcpserver(4000,"Timeout",20)  Get
t =
TCPServer with properties:

ServerAddress: "::"
ServerPort: 4000
Connected: 0
ClientAddress: ""
ClientPort: []
NumBytesAvailable: 0

Show all properties, functions

Display the value of Timeout.

t.Timeout  Get

ans = 20
The output shows the specified timeout value, indicating that t waits for up to 20 seconds to complete a read or
write operation.

 Create TCP/IP Server and Set Connection Event Callback

Create a callback function called connectionFcn and save it as a .m file in the current working directory. When
this callback function is invoked, it displays a message in the MATLAB Command Window indicating connection or
disconnection. You can modify this code to perform read or write operations on your TCP/IP server instead of
displaying a message.

function connectionFcn(src,~)
if src.Connected
disp("This message is sent by the server after accepting the client connection
else
disp("Client has disconnected.")
end
end

Create the TCP/IP server called server and set the ConnectionChangedFcn property to a handle to the
connectionFcn callback function.

server = tcpserver("localhost",4000,"ConnectionChangedFcn",@connectionFcn)  Get

server =
TCPServer with properties:

ServerAddress: "127.0.0.1"
ServerPort: 4000
Connected: 0
ClientAddress: ""
ClientPort: []
NumBytesAvailable: 0

Show all properties, functions


Create a TCP/IP client called client with the same IP address and port number as your server.

client = tcpclient("localhost",4000)  Get

client =
tcpclient with properties:

Address: 'localhost'
Port: 4000
NumBytesAvailable: 0

Show all properties, functions

This message is sent by the server after accepting the client connection request.

After you create the client, it connects to the server. This triggers a connection event for the server, which invokes
the connectionFcn callback function. The callback function returns the message you see in the Command
Window.

Disconnect the client from the server by clearing it.

clear client  Get

Client has disconnected.

Clearing the client triggers a disconnection event for the server and returns the message from the
connectionFcn callback function.

 Write String Data from TCP/IP Server

Create a TCP/IP server that listens for a client connection request at the specified port and IP address. Then, write
data from the server to the connected client.

Create a TCP/IP server that listens for connections at localhost and port 4000.

server = tcpserver("localhost",4000)  Get

server =
TCPServer with properties:

ServerAddress: "127.0.0.1"
ServerPort: 4000
Connected: 0
ClientAddress: ""
ClientPort: []
NumBytesAvailable: 0

Show all properties, functions

Create a TCP/IP client to connect to your server object using tcpclient. You must specify the same IP address
and port number you use to create server.
client = tcpclient("localhost",4000)  Get

client =
tcpclient with properties:

Address: 'localhost'
Port: 4000
NumBytesAvailable: 0

Show all properties, functions

See the values of the Connected, ClientAddress, and ClientPort properties for server.

server  Get

server =
TCPServer with properties:

ServerAddress: "127.0.0.1"
ServerPort: 4000
Connected: 1
ClientAddress: "127.0.0.1"
ClientPort: 65136
NumBytesAvailable: 0

Show all properties, functions

The output shows that server successfully accepts a request from client and that client establishes a
connection to server.

Send data to the client by writing it using the server object. Since the client is connected to the server, this data is
available in the client. Read this data from the client object.

write(server,"hello world","string")  Get


read(client,11,"string")

ans =
"hello world"

 Read String Data Sent to TCP/IP Server

Create a TCP/IP server that listens for a client connection request at the specified port and IP address. Then read
data sent to the server from the connected client.

Create a TCP/IP server that listens for connections at localhost and port 4000.

server = tcpserver("localhost",4000)  Get


server =
TCPServer with properties:

ServerAddress: "127.0.0.1"
ServerPort: 4000
Connected: 0
ClientAddress: ""
ClientPort: []
NumBytesAvailable: 0

Show all properties, functions

Create a TCP/IP client to connect to your server object using tcpclient. You must specify the same IP address
and port number you use to create server.

client = tcpclient("localhost",4000)  Get

client =
tcpclient with properties:

Address: 'localhost'
Port: 4000
NumBytesAvailable: 0

Show all properties, functions

Display the values of the Connected, ClientAddress, and ClientPort properties for server.

server  Get

server =
TCPServer with properties:

ServerAddress: "127.0.0.1"
ServerPort: 4000
Connected: 1
ClientAddress: "127.0.0.1"
ClientPort: 65440
NumBytesAvailable: 0

Show all properties, functions

The output shows that server successfully accepts a request from client and that client establishes a
connection to server.

Write data to the TCP/IP client. Since the client is connected to the server, this data is available in the server. Read
the first five values of string data using the server object.

write(client,"helloworld","string")  Get
read(server,5,"string")

ans =
"hello"
If you read five more values, you receive the remaining string data.

read(server,5,"string")  Get

ans =
"world"

Version History
Introduced in R2021a

See Also
tcpclient | echotcpip

Topics
Communicate Using TCP/IP Server Sockets
Communicate Between a TCP/IP Client and Server in MATLAB

You might also like