セッションと通信
セッションは「1ポート分の通信管理単位」です。追加から接続設定・起動・手動送信・ログ確認・保存まで、基本的な操作を説明します。
画面の各項目の詳細(選択肢の意味・有効/無効条件)は セッション画面 も参照してください。
セッションを追加する
- サイドバーの 「+ セッション追加」 をクリックします(メニューバーの 「セッション」→「セッション追加」 でも可)。
- テンプレート選択ダイアログが開きます。用途に合ったテンプレートを選び 「追加」(または項目をダブルクリック)でセッションを作成します。「キャンセル」で何も作成せずに閉じます。
- 選んだテンプレートに応じて、接続設定とオートメーションが初期設定された新しいタブが追加され、選択されます。
| テンプレート | 接続設定 | 初期オートメーション | 用途 |
|---|---|---|---|
| TCP サーバー(エコー応答) | TCP / Server / 0.0.0.0:9000 | 受信して返す ×1 | テスト対象からの接続を受け、届いたデータをそのまま返す |
| UDP サーバー(エコー応答) | UDP / Server / 0.0.0.0:9000 | 受信して返す ×1 | UDP パケットを受信して送信元へ返す |
| TCP クライアント(定期送信) | TCP / Client / 127.0.0.1:9000 | 定期送信 ×1 | CommSim 側から接続して定期的にデータを送信する |
| 空白 | TCP / Server / 0.0.0.0:9000 | なし | デフォルト設定で空のセッションを作成(従来の動作) |
テンプレートのポートはすべて固定値(9000)です。同じポートのセッションを複数同時に起動するとエラーになるため、必要に応じて接続設定でポートを変更してください。TCP クライアントの接続先
127.0.0.1:9000は環境に合わせて変更します。
セッションを削除する
- 削除したいセッションのタブを選択します。
- メニューバーの 「セッション」→「セッション削除」 をクリックします。
- 確認ダイアログが表示されます。「削除」を選ぶと通信が停止され、そのセッションがプロジェクトから取り除かれます。
削除は元に戻せません。削除した時点でプロジェクトは「未保存」状態になります(保存するまではファイルには反映されません)。
セッション名を変更する
名前は「セッション名の変更」ダイアログで編集します。開き方は 3 通りあり、どれを使っても同じダイアログが出ます。
- セッションビュー上部のヘッダで、名前の右にある 鉛筆アイコン をクリックする
- ヘッダの名前を ダブルクリック する
- サイドバーのセッションを右クリックして 「名前の変更」(または選択して F2)
ダイアログを開くと現在の名前が選択された状態で入ります。そのまま入力すれば置き換えられ、OK で確定、キャンセル(Esc)で元のままです。名前を空にすると OK が押せなくなります(空白だけの名前も同じ扱いです)。
変更した名前は、ヘッダ・サイドバーの一覧・別ウィンドウで開いたときのタイトルに反映されます。名前を変えた時点でプロジェクトは「未保存」状態になるので、残すには保存してください。
セッションを追加するときの「セッションの追加」ダイアログにも名前欄があります。あらかじめ名前を入れておけば、追加してから変更し直す必要はありません。
接続設定
「接続設定」枠で通信の方式を指定します。
| 項目 | 選択肢 / 入力 | 説明 |
|---|---|---|
| プロトコル | Tcp / Udp | 使用する通信プロトコル |
| 接続 | Server / Client | サーバ(待ち受け)かクライアント(接続しに行く)か |
| ホスト | IPアドレス等 | サーバ時は待受アドレス(0.0.0.0 = すべて)、クライアント時は接続先 |
| ポート | 数値 | 待受ポート / 接続先ポート |
| 通信種別 (UDP のみ) | ユニキャスト / マルチキャスト / ブロードキャスト | UDP の宛先方式。詳細は下記「UDP の通信種別」 |
| データ形式 | プロジェクト設定に従う / UTF-8 / ASCII / HEX(バイナリ) | 送受信データの解釈方式 |
TCP と UDP の違い
- TCP サーバ: 指定ポートで接続を待ち受けます。クライアントが接続すると「接続済み」になり、切断されると自動的に「待受中」へ戻って再び待ち受けます。
- TCP クライアント: 指定ホスト・ポートへ接続します。
- UDP: コネクションレスです。サーバ時は指定ポートで受信し、最後に受信した相手を送信先として記憶します。クライアント時は設定したホスト・ポートへ送信します。
UDP の通信種別(マルチキャスト / ブロードキャスト)
プロトコルを Udp にすると、接続設定枠に 通信種別 が表示されます。SSDP・mDNS などのディスカバリ機器の代わりにスタブとして振る舞うときに使います。
| 通信種別 | 追加で表示される項目 | 動作 |
|---|---|---|
ユニキャスト(既定) | なし | 従来どおりの 1 対 1 通信 |
マルチキャスト | グループ / TTL / 応答先 | 指定グループ(224.0.0.0〜239.255.255.255)に参加して受信・応答・送信する |
ブロードキャスト | ブロードキャストアドレス | ブロードキャストアドレス宛に送受信する |
- マルチキャスト / ブロードキャストを選ぶと 「ホスト」欄は非表示になります。宛先は専用の「グループ」「ブロードキャストアドレス」欄で指定し、待ち受けはすべてのインターフェース(
0.0.0.0)で行います。 - 応答先(マルチキャストのみ):
送信元へユニキャスト(要求元に直接返す。SSDP の M-SEARCH 応答型)かグループへマルチキャスト(参加グループへ広報する。mDNS 型)を選べます。ブロードキャスト受信への応答は送信元へのユニキャスト固定です。 - TTL(マルチキャスト送信の到達範囲・ホップ数): 既定
1は同一サブネット内。ルータを越えて届かせたいときは値を増やします。 - マルチキャストでグループ宛を 受信して応答するには
Serverを選びます。Client× マルチキャストは送信専用(グループに参加しません)です。 - マルチキャスト / ブロードキャストは スタブモード専用です(転送先=中継には未対応)。
複数 NIC 環境の注意: マルチキャストの参加・送信は既定のネットワークインターフェースで行います。有線と Wi-Fi など 複数のネットワークアダプタがある環境では、期待した NIC でグループ参加されず受信できないことがあります(v1 では送信元インターフェースの選択に未対応)。受信できないときは、使いたいアダプタ以外を一時的に無効化してお試しください。
データ形式(テキスト / バイナリ)
「データ形式」は、このセッションのオートメーション・バイナリ構造応答などで新規作成した項目のエンコーディング初期値を決めます。また手動送信の HEX チェックボックスも連動します。
| 選択肢 | 動作 |
|---|---|
プロジェクト設定に従う(現在: ○○) | 「プロジェクト設定…」で設定したプロジェクト既定を継承。プロジェクト設定を変えると自動で追従 |
UTF-8 | このセッションだけ UTF-8 に固定 |
ASCII | このセッションだけ ASCII に固定 |
HEX(バイナリ) | このセッションだけ RawHex(バイナリ)に固定 |
- データ形式を変更すると、既存のオートメーションステップ・構造体ルール設定に別のエンコーディングが設定されているとき、一括変更するか確認するダイアログが表示されます。
- 「データ形式」は起動中でも変更できます。
起動中は変更できない設定: プロトコル・接続・ホスト・ポート・転送先(有効/ホスト/ポート)、および UDP の通信種別・グループ・TTL・応答先・ブロードキャストアドレスは起動中グレーアウトします。変更したいときは一度「停止」してから直してください。「データ形式」はこの制限の対象外です。
転送先(上流)の設定
「転送先(上流)」を有効にすると、受信したデータをそのまま指定した上流機器へ転送し、その往復通信を記録できます。スタブとして自動応答する場合は転送先の設定は不要です。詳細は 中継とキャプチャ を参照してください。
起動・停止
- 「起動」 ボタンで通信を開始します。状態ランプが緑になり、状態テキスト(待受中 / 接続済み 等)が表示されます。
- 起動中はボタンが 「停止」 になります。クリックで停止します。
- 周期トリガーを持つオートメーションが有効になっている場合、起動と同時に定期送信が始まります(オートメーション 参照)。
手動送信
画面最下部の手動送信バーから、任意のデータを1回送信できます。
- テキストで送るときはそのまま入力欄に文字列を入れます(UTF-8 で送信)。
- バイナリで送るときは 「HEX」 にチェックを入れます。入力欄が 専用のバイト入力(HEXエディタ) に切り替わります。
- 「送信」 をクリックします。
「HEX」チェックの初期状態は「データ形式」の設定に連動します。セッションの実効データ形式が
HEX(バイナリ)のときは起動時に自動でチェックが入ります。
送信は「起動」している状態で行ってください。TCP サーバの場合は、クライアントが接続して「接続済み」になっている必要があります。
HEX入力(バイトエディタ)
「HEX」チェック時の入力欄は、バイト単位で編集しやすい専用エディタになります。
- 16進数字を打つと 2桁ごとに自動でバイト区切りされます(例
4F 4B 0D 0A)。16進以外の文字は受け付けません。 - 右側に バイト数 が表示されます。下に ASCII プレビュー(印字可能文字はその文字、不可視は
.)が出ます。 - 貼り付けは寛容に解釈します。
01 02/0102/0x01,0x02/ コロン・ハイフン区切りや、ログ・キャプチャの HEX ダンプをそのまま貼り付けても自動整形されます。 - 桁が途中(奇数桁)のときは警告表示になります。右クリックで「HEXとしてコピー/貼り付け/クリア」、⤢ ボタンで広い「拡大編集」を開けます。
テキスト入力欄では \r\n はそのまま4文字として扱われます。CR/LF などの制御文字を正確に送りたい場合は HEX で指定するのが確実です(例: 0D 0A)。
TCP サーバへの同時接続(複数クライアント)
TCP サーバモードでは、複数のクライアントが同時に接続できます。IoT 機器や産業用機器が 1 つのサーバポートに複数台つながる構成をそのままスタブで代替できます。
接続中クライアントの確認
TCP サーバが起動中にクライアントが接続すると、手動送信バーの上に 接続中クライアントの一覧 が表示されます。各行に表示される情報は次のとおりです。
| 表示 | 説明 |
|---|---|
#N | このセッション内の接続通し番号(接続順に 1, 2, 3… と採番) |
| 接続元 | クライアントの IP アドレスとポート番号 |
| 接続時刻 | 接続を受理した時刻 |
クライアントが切断すると一覧から自動的に消えます。1 クライアントの切断が他の接続に影響することはありません。サーバは切断後も新規接続の受け入れを継続します。
接続一覧パネルは「いま」つながっている接続のライブ表示です。過去の接続履歴を遡って分析するには ログビュワー(コネクションペイン)を使います。
送信先の指定
手動送信バーの 「送信先」 コンボボックスで、データを送る宛先を選択できます。
| 送信先 | 動作 |
|---|---|
| 全クライアント(既定) | 現在接続中のすべてのクライアントへ同じデータを送信する |
| 特定クライアント #N | 指定した接続番号のクライアントのみへ送信する(他クライアントには届かない) |
送信先に特定のクライアントを指定したとき、そのクライアントがすでに切断済みだった場合は 「全クライアント」へ自動的に切り替えられます。手動送信バーの右側に 送信結果(送達 n 件 / スキップ n 件) が表示されるので、意図どおりに届いたかを確認できます。
自動応答と受信元への返信
オートメーションのパケット一致応答・バイナリ構造応答は、受信してきたクライアントへのみ返します。他のクライアントに漏れることはありません。
| 送信の種類 | 宛先 |
|---|---|
| 手動送信(全クライアント指定) | 接続中のすべてのクライアント |
| 手動送信(特定 #N 指定) | 指定した 1 クライアントのみ |
| オートメーション:パケット一致応答 | 受信してきたクライアントのみ |
| オートメーション:接続時グリーティング | 接続してきた当該クライアントのみ |
| オートメーション:周期送信(ハートビート等) | 接続中のすべてのクライアント |
ログの接続タグ(#N)
ログの各行には接続番号 #N が付記されるため、同じセッション内でも「どのクライアントとのやり取りか」を区別できます。
TCP サーバ以外(TCP クライアント・UDP)では同時接続の概念がないため、接続一覧パネルと送信先コンボは表示されません。
ログの確認
ログ常設ペインに送受信・システム・エラーがリアルタイムの DataGrid 形式で表示されます。オートメーションの定期送信は Tx として記録されます。ログはタブではなく画面下部の常設ペインなので、接続設定や自動応答を編集しながらでも受信が見えます。
ペイン見出しの [⌄] でペインを畳んでタブ側を広く使い、[⤢] でタブ側を隠してログだけを画面いっぱいに広げられます。境界のドラッグで高さも変えられ、これらの状態はセッションごとに記憶されます。行を選ぶと右の詳細ペインに HEX ダンプとフィールド分解が出ます(バイナリ構造定義があるプロジェクトでは既定で表示、無ければ「詳細」チェックボックスで表示できます)。
| 列 | 内容 |
|---|---|
| ソース(#N) | 接続番号(TCP サーバ複数クライアント時に区別) |
| 時刻 | 記録時刻(HH:mm:ss.fff) |
| # | 通し番号 |
| 種別 | Tx / Rx / Sys / Err / HB / Proxy / Script |
| 方向 | 通信の向き(AppToDevice / DeviceToApp) |
| 注入 | 中継時にルール/オートメーションが応答を差し替えた行に ✓(その行は淡くハイライト) |
| Len | バイト数 |
| HEX | バイト列の HEX ダンプ |
| 内容 | テキスト表現またはデコード済み文字列 |
- 種別ごとに色分け(Tx=青 / Rx=緑 / Sys=灰 / Err=赤 / HB=紫 / Proxy=橙 / Script=灰青)
- ツールバーの「種別」ドロップダウン(Tx / Rx / Heartbeat / System / Error / Proxy / Script のチェックリスト。先頭の「(すべて選択)」で一括 ON/OFF)で表示を絞り込めます(既定はすべて ON。絞り込み中はボタンに「種別 (n/7)」と件数を表示)。「Proxy」だけをオンにすると中継パケットのみを確認できます。
- 表示は最大 1000 件で、超過分は古いものから自動的に削除されます。
- 「クリア」 ボタンで表示を消去できます。
- 「全行コピー」 ボタンで、現在のフィルタを適用した行をヘッダ行込みのタブ区切りテキストとしてクリップボードへコピーします(Excel への貼り付けに対応しています)。
- 行を右クリックすると「この行をコピー」「全行コピー」「クリア」のメニューが出ます。「この行をコピー」は選んだ 1 行だけを全行コピーと同じ書式で写すので、不具合報告に 1 行だけ貼りたいときに使えます。
- 「シナリオとして保存」 ボタンで現在のキャプチャ内容を
.commscenarioファイルに書き出せます(採取ログ記録オフ時も書き出せます)。 - ログはセッションごとに独立しています。
- 最新行への自動追従: ログの一番下を表示しているときは、新しい行が来ると自動で最下部までスクロールします。過去ログを見るために上へスクロールしている間は追従しません(最下部に戻すと再び追従します)。
- 再起動時の復元: アプリを起動し直してプロジェクトを開くと、その日の記録ログから各セッションの直近(最大 1000 件)が「ログ」タブへ自動的に読み込まれて表示されます。続きはそのままライブ表示に追記されます。当日より前のログや全件は ログビュワー で確認してください。
役割の分担: ログペインは今の通信をライブで監視する場所です。検索・期間フィルタ・HEX/フィールド分解での詳細分析は「ビュワーで開く」から ログビュワー で行います。
ログをファイルへ保存する方法は ログのファイル出力 を参照してください。
ログペインの 「ビュワーで開く」 ボタンを押すと、このセッションの記録ログファイルを ログビュワー で開き、複数ファイルの統合・フィルタ・タイムライン波形・HEX/構造分解で詳しく分析できます。
プロジェクトの保存・読み込み
開いているすべてのセッションは、1つのプロジェクトファイル(.commsim) としてまとめて扱います。自動保存はありません。メニューバーの 「ファイル」 から操作します。
| 操作 | ショートカット | 動作 |
|---|---|---|
| 新規 | Ctrl+N | すべてのセッションを閉じ、既定セッション1つの新しいプロジェクトにします |
| ファイルから開く… | Ctrl+O | ファイルを選んで開きます。メニューの「最近使ったプロジェクト」からも開けます |
| 上書き保存 | Ctrl+S | 現在のファイルへ保存します |
- 未保存の変更があると、タイトルバーのファイル名の右に
*が付きます。 - 未保存のまま「閉じる/新規/開く」を行うと、確認ダイアログ(保存して続行/保存せず続行/キャンセル)が表示されます。
- アプリ起動時は、最後に開いていたプロジェクトが自動で開きます。
セッションを別ウィンドウで開く(ポップアウト)
複数のセッションのログを同時に目視確認したいときや、モニタを分割して監視したいときに利用します。
開き方
次のいずれかの操作でセッションを独立したウィンドウとして開けます。
| 操作 | 説明 |
|---|---|
| サイドバーの ⧉ ボタン | 各セッション行の右端にある⧉アイコンをクリックする |
| メニュー 「セッション」→「選択中のセッションを別ウィンドウで開く」 | 選択中のセッションを別ウィンドウで開く |
| キーボードショートカット Ctrl+Shift+P | 選択中のセッションを別ウィンドウで開く |
同じセッションを再度開こうとした場合、新しいウィンドウは開かず、既存のウィンドウが前面に表示されます。
別ウィンドウでできること / できないこと
別ウィンドウは閲覧・監視専用です。メインウィンドウと同じ SessionViewModel を共有するため、ログや接続状態はリアルタイムで連動します。
| できること | できないこと |
|---|---|
| ログのリアルタイム確認 | 接続設定の変更(「接続」タブは非表示) |
| 手動送信 | オートメーションの追加/編集/削除 |
| 起動・停止 | 構造体ルールの編集 |
| ログのスクロール・クリア | データ形式の一括変更(ダイアログを伴う操作) |
ウィンドウを閉じてもセッションの通信は継続します。メインウィンドウ側でも同じセッションを引き続き操作できます。
ウィンドウの位置・サイズ
別ウィンドウの位置とサイズは、セッションごとに app-settings.json へ自動保存されます。次回同じセッションのポップアウトを開くと、前回の位置・サイズに復元されます。前回の位置が画面外になっている場合は画面中央に表示されます。
ライフサイクル
- セッション削除時: 対応する別ウィンドウも自動的に閉じます。
- プロジェクト切替(新規・開く)時: すべての別ウィンドウが自動的に閉じます。
- アプリ終了時: すべての別ウィンドウが閉じます。