このページの内容は最新ではありません。最新版の英語を参照するには、ここをクリックします。
tcpclient
TCP/IP サーバーとの TCP/IP クライアント接続の作成
説明
tcpclient
オブジェクトは、MATLAB® からデータの読み取りと書き込みを行うためのリモート ホストとリモート ポートへの接続を表します。リモート ホストは TCP/IP 通信をサポートするサーバーまたはハードウェアであり、既に存在していなければなりません。tcpclient
オブジェクトは常にクライアントであり、サーバーとして使用することはできません。TCP/IP サーバーを作成する詳細については、Communicate Using TCP/IP Server Sockets (Instrument Control Toolbox)を参照してください。
作成
説明
は、リモート ホスト t
= tcpclient(address
,port
)address
とリモート ポート port
に関連付けられているサーバーに接続する TCP/IP クライアントを作成します。address
の値は、リモート ホスト名またはリモート ホストの IP アドレスのいずれかになります。port
の値は、1 ~ 65535 の間の数値でなければなりません。入力 address
は Address
プロパティを設定し、入力 port
は Port
プロパティを設定します。
無効なアドレスまたはポートを指定した場合、TCP/IP サーバーが実行されないか、サーバーに対する接続が確立されず、オブジェクトが作成されずに MATLAB はエラーをスローします。
は、接続を作成し、1 つ以上の名前と値のペアの引数を使用して追加のプロパティを設定します。名前と値のペアの引数を使用して、t
= tcpclient(address
,port
,Name,Value
)Timeout
、ConnectTimeout
、EnableTransferDelay
の各プロパティを設定します。各プロパティを引用符で囲み、そのあとにプロパティ値を続けます。
例: t = tcpclient("144.212.130.17",80,"Timeout",20,"ConnectTimeout",30)
は、IP アドレス 144.212.130.17、ポート 80 で TCP/IP サーバーへの TCP/IP クライアント接続を作成します。タイムアウト期間は 20 秒に、接続タイムアウトは 30 秒に設定されます。
プロパティ
オブジェクト作成プロパティ
Address
— リモート ホスト名または IP アドレス
文字ベクトル | string スカラー
リモート ホスト名または IP アドレス。文字ベクトルまたは string スカラーとして指定します。このプロパティは、オブジェクトの作成時にのみ設定できます。
例: t = tcpclient("www.mathworks.com",80)
は、www.mathworks.com のポート 80 への TCP/IP クライアント接続を作成します。
例: t = tcpclient("144.212.130.17",80)
は、IP アドレス 144.212.130.17 のポート 80 での TCP/IP サーバーへの TCP/IP クライアント接続を作成します。
データ型: char
| string
Port
— リモート ホスト ポート
数値
リモート ホスト ポート。1 ~ 65535 の数値として指定します (上下限値を含む)。このプロパティは、オブジェクトの作成時にのみ設定できます。
例: t = tcpclient("www.mathworks.com",80)
は、www.mathworks.com のポート 4012 への TCP/IP クライアント接続を作成します。
データ型: double
Timeout
— 操作完了までの許容時間
10 (既定値) | 数値
読み取り操作と書き込み操作の完了までの許容時間 (秒単位)。数値として指定します。名前と値のペアの引数を使用して、オブジェクトの作成時にこのプロパティを設定します。ドット表記を使用して、オブジェクトを作成した後にプロパティを変更することもできます。
例: t = tcpclient("144.212.130.17",80,"Timeout",20)
は、読み取り/書き込みのタイムアウト期間を 20 秒に設定します。
データ型: double
ConnectTimeout
— リモート ホストへの接続までの許容時間
Inf
(既定値) | 数値
リモート ホストへの接続までの許容時間 (秒単位)。数値として指定します。このプロパティは、指定したリモート ホストへの接続要求が成功または失敗するまで待機する最大時間を指定します。このプロパティは、オブジェクトの作成時にのみ設定できます。
例: t = tcpclient("144.212.130.17",80,"ConnectTimeout",30)
は、接続タイムアウト期間を 30 秒に設定します。
データ型: double
EnableTransferDelay
— サーバーからの肯定応答の遅延を許可
true
または 1
(既定値) | false
または 0
サーバーからの肯定応答の遅延を許可。logical の true
または false
として指定します。このプロパティは、Nagle アルゴリズムが接続に対してオンとオフのどちらであるかを示します。
このプロパティが true
の場合、クライアントは未処理データの小さなセグメントを集め、肯定応答 (ACK) がサーバーから到着すると単一のパケットで送信します。データを直ちにネットワークに送信する場合は、このプロパティを false
に設定します。ネットワークが遅い場合は、転送遅延を有効にすることでパフォーマンスを改善できます。ただし、高速のネットワークでは ACK がすぐに到着し、転送遅延を有効にした場合と無効にした場合の差はごくわずかです。
このプロパティは、オブジェクトの作成時にのみ設定できます。
例: t = tcpclient("144.212.130.17",80,"EnableTransferDelay",false)
は、転送遅延を無効にします。
データ型: logical
読み取りと書き込みのプロパティ
NumBytesAvailable
— 読み込みに使用できるバイト数
数値
この プロパティ は読み取り専用です。
読み取り可能なバイト数。数値として返されます。
例: t.NumBytesAvailable
は読み込みに使用できるバイト数を返します。
データ型: double
NumBytesWritten
— リモート ホストに書き込まれたバイトの合計数
0 (既定値) | 数値
この プロパティ は読み取り専用です。
リモート ホストに書き込まれたバイトの合計数。数値として返されます。
例: t.NumBytesWritten
は書き込まれたバイト数を返します。
データ型: double
ByteOrder
— バイト順
"little-endian"
(既定値) | "big-endian"
大きい数値に複数のバイトを配置する順序。"little-endian"
または "big-endian"
として指定します。
このプロパティ値は、uint16
、int16
、uint32
、int32
、single
、double
などのマルチバイト データ型の読み取りおよび書き込み時に設定します。このプロパティ値は、tcpclient
に接続されたリモート ホストの構成に一致する必要があります。リモート ホストやその他のアプリケーションにおける既定のバイト順はビッグエンディアンである場合がありますが、このプロパティの既定値は little-endian
です。
例: t.ByteOrder = "big-endian"
は、バイト順をビッグエンディアンに設定します。
データ型: char
| string
Terminator
— データの終端文字
"LF"
(既定値) | "CR"
| "CR/LF"
| 0 ~ 255
ASCII 終端データの読み取りと書き込みの終端文字。"LF"
、"CR"
、"CR/LF"
、または 0 ~ 255 の数値として返されます。読み取りおよび書き込み終端文字が異なる場合、Terminator
は、これらの値の 1 行 2 列の cell 配列として返されます。このプロパティは、関数 configureTerminator
を使用して設定します。
例: configureTerminator(t,"CR")
は、読み取りと書き込み両方の終端文字を "CR"
に設定します。
例: configureTerminator(t,"CR",10)
は、読み取り終端文字を "CR"
に、書き込み終端文字を 10
に設定します。
データ型: double
| char
| string
コールバック プロパティ
BytesAvailableFcnMode
— コールバックのトリガー モードで使用できるバイト数
"off"
(既定値) | "byte"
| "terminator"
使用可能なバイト数のコールバック トリガー モード。"off"
、"byte"
または "terminator"
として返されます。この設定では、コールバックをオフにするか、BytesAvailableFcnCount
で指定されたバイト数でトリガーするか、または Terminator
で指定された終端文字でトリガーするかを決定します。このプロパティは、関数 configureCallback
を使用して設定します。
例: configureCallback(t,"byte",50,@callbackFcn)
は、新しいデータの 50 バイトが読み取り可能になるたびに callbackFcn
コールバックがトリガーするように設定します。
例: configureCallback(t,"terminator",@callbackFcn)
は、終端文字が読み取り可能なときにトリガーするように、callbackFcn
コールバックを設定します。
例: configureCallback(dev,"off")
はコールバックをオフにします。
データ型: char
| string
BytesAvailableFcnCount
— コールバックをトリガーするデータのバイト数
64 (既定値) | 数値
BytesAvailableFcn
で指定されたコールバックをトリガーするデータのバイト数。double として返されます。この値は、BytesAvailableFcnMode
プロパティが "byte"
である場合にのみ使用されます。これらのプロパティは、関数 configureCallback
を使用して設定します。
例: configureCallback(t,"byte",50,@callbackFcn)
は、新しいデータの 50 バイトが読み取り可能になるたびに callbackFcn
コールバックがトリガーするように設定します。
データ型: double
BytesAvailableFcn
— バイト利用可能なイベントでトリガーされるコールバック関数
関数ハンドル
バイト利用可能なイベントでトリガーされるコールバック関数。関数ハンドルとして返されます。バイト利用可能なイベントは、特定のバイト数または終端文字を受信して生成されます。このプロパティは、関数ハンドルを割り当てるまでは空です。このプロパティは、関数 configureCallback
を使用して設定します。
例: configureCallback(t,"byte",50,@callbackFcn)
は、新しいデータの 50 バイトが読み取り可能になるたびに callbackFcn
コールバックがトリガーするように設定します。
データ型: function_handle
ErrorOccurredFcn
— エラー イベントによりトリガーされるコールバック関数
関数ハンドル
エラー イベントによりトリガーされるコールバック関数。関数ハンドルとして返されます。非同期の読み取りまたは書き込みエラーが発生すると、エラー イベントが生成されます。このプロパティは、関数ハンドルを割り当てるまでは空です。
例: t.ErrorOccurredFcn = @myErrorFcn
データ型: function_handle
UserData
— ユーザー データの汎用プロパティ
任意のタイプ
ユーザー データの汎用プロパティ。任意の MATLAB データ型として返されます。たとえば、このプロパティを使用すると、コールバック関数からイベントがトリガーされるときにデータを保存できます。
例: t.UserData
オブジェクト関数
read | TCP/IP を介したリモート ホストからのデータの読み取り |
readline | TCP/IP を介したリモート ホストからの ASCII 文字列データ行の読み取り |
write | TCP/IP を介したリモート ホストへのデータの書き込み |
writeline | TCP/IP を介したリモート ホストへの ASCII データ行の書き込み |
configureTerminator | TCP/IP を介したリモート ホストとの ASCII 文字列通信用に終端文字を設定 |
configureCallback | TCP/IP を介してリモート ホストと通信するためのコールバック関数とトリガー条件の設定 |
flush | TCP/IP を介したリモート ホストとの通信のバッファーをクリア |
例
ホスト名を使用した TCP/IP リモート ホストへの接続
次に示すホスト アドレスとポート 80
を使用して、TCP/IP オブジェクト t
を作成します。
t = tcpclient("www.mathworks.com",80)
t = tcpclient with properties: Address: 'www.mathworks.com' Port: 80 NumBytesAvailable: 0 Show all properties, functions
指定した Web アドレスまたは 'localhost
などのホスト名を使用して接続する場合、IP アドレスには既定で IPv6 形式が使用されます。接続先のサーバーで IPv4 形式が必要な場合、接続は失敗します。IPv4 では、ホスト名ではなく、明示的な IP アドレスを指定することで接続を作成できます。
IP アドレスを使用した TCP/IP リモート ホストへの接続
示される IP アドレスとポート 80
を使用する、t
という TCP/IP クライアント接続を作成します。
t = tcpclient("144.212.130.17",80)
t = tcpclient with properties: Address: '144.212.130.17' Port: 80 NumBytesAvailable: 0 Show all properties, functions
TCP/IP リモート ホストへの接続とタイムアウト期間の設定
t
という TCP/IP クライアント接続を作成し、タイムアウト期間を 20 秒に設定します。
t = tcpclient("144.212.130.17",80,"Timeout",20)
t = tcpclient with properties: Address: '144.212.130.17' Port: 80 NumBytesAvailable: 0 Show all properties, functions
ans = 20
Timeout
の値を設定します。
t.Timeout
出力にはプロパティの変更が反映されます。
TCP/IP リモート ホストへの接続と接続タイムアウト期間の設定
t
という TCP/IP クライアント接続を作成し、ConnectTimeout
プロパティを 30 秒に設定します。
t = tcpclient("144.212.130.17",80,"ConnectTimeout",30)
t = tcpclient with properties: Address: '144.212.130.17' Port: 80 NumBytesAvailable: 0 Show all properties, functions
ConnectTimeout
の値を設定します。
t.ConnectTimeout
ans = 30
出力にはプロパティの変更が反映されます。
リモート ホストからの uint8 データの読み取りと書き込み
t
という TCP/IP クライアント接続を作成します。TCP/IP エコー サーバーにポート 4000 で接続します。そのためには、echotcpip
サーバーをポート 4000 で実行していなければなりません。
echotcpip("on",4000) t = tcpclient("localhost",4000)
t = tcpclient with properties: Address: 'localhost' Port: 4000 NumBytesAvailable: 0 Show all properties, functions
関数 write
は、t
に接続されたリモート ホストにデータを同期的に書き込みます。まずデータを指定し、次にデータを書き込みます。指定された数の値がリモート ホストに書き込まれるまで、MATLAB の実行は一時停止されます。
10 バイトの uint8
データを変数 data
に割り当てます。
data = uint8(1:10)
data = 1×10 uint8 row vector
1 2 3 4 5 6 7 8 9 10
データを表示します。
whos data
Name Size Bytes Class Attributes data 1x10 10 uint8
エコー サーバーにデータを書き込みます。
write(t,data)
NumBytesAvailable
プロパティを表示して、書き込み操作が正常に行われたことを確認します。
t.NumBytesAvailable
ans = 10
クライアントはエコー サーバーに接続しているため、サーバーに書き込むデータはクライアントに返されます。読み取り可能なすべてのバイトを読み取ります。
read(t)
ans = 1×10 uint8 row vector
1 2 3 4 5 6 7 8 9 10
関数 read
を引数なしで使用すると、リモート ホストに接続している t
から読み取り可能なすべてのバイトが読み取られ、そのデータが返されます。読み取られる値の数は NumBytesAvailable
プロパティで決まり、入力バッファーで利用可能なバイト数となります。
オブジェクトをクリアして、TCP/IP クライアントとリモート ホストの接続を閉じます。echotcpip
サーバーをオフにします。
clear t echotcpip("off")
拡張機能
C/C++ コード生成
MATLAB® Coder™ を使用して C および C++ コードを生成します。
使用上の注意事項および制限事項:
プラットフォーム固有のコード生成は、デスクトップ プラットフォーム (Windows®、macOS、Linux®) と Raspberry Pi® でのみサポートされています。
次の
tcpclient
プロパティではコード生成はサポートされていません。NumBytesAvailable
NumBytesWritten
ByteOrder
Terminator
BytesAvailableFcnMode
BytesAvailableFcnCount
BytesAvailableFcn
ErrorOccurredFcn
UserData
Address
、Port
、Timeout
、ConnectTimeout
、EnableTransferDelay
のみがサポートされています。次のオブジェクト関数
tcpclient
ではコード生成はサポートされていません。readline
readbinblock
writeline
writebinblock
writeread
configureTerminator
configureCallback
flush
read
と write
のみがサポートされます。
バージョン履歴
R2014b で導入
MATLAB コマンド
次の MATLAB コマンドに対応するリンクがクリックされました。
コマンドを MATLAB コマンド ウィンドウに入力して実行してください。Web ブラウザーは MATLAB コマンドをサポートしていません。
Select a Web Site
Choose a web site to get translated content where available and see local events and offers. Based on your location, we recommend that you select: .
You can also select a web site from the following list:
How to Get Best Site Performance
Select the China site (in Chinese or English) for best site performance. Other MathWorks country sites are not optimized for visits from your location.
Americas
- América Latina (Español)
- Canada (English)
- United States (English)
Europe
- Belgium (English)
- Denmark (English)
- Deutschland (Deutsch)
- España (Español)
- Finland (English)
- France (Français)
- Ireland (English)
- Italia (Italiano)
- Luxembourg (English)
- Netherlands (English)
- Norway (English)
- Österreich (Deutsch)
- Portugal (English)
- Sweden (English)
- Switzerland
- United Kingdom (English)