ジメネス フェリックス
2017.07.06
TCP/IP通信について
TCP/IP通信のブロックでの文字列の送受信はどのように行うのでしょうか?
初歩的な質問ですがお願いします。
回答
Sotaサポート
2017.07.06
ジメネス フェリックス様

Sotaサポートです。

下記URLより、各ブロックの仕様をご確認ください。
https://goo.gl/Bn28GE

◆文字列の送信
「TCP/IPクライアント」を使用してください。
上記URLにもある通り、下記の3つを設定してください。
 ・data…接続先に送信する文字列。送信時には末尾に改行コード( )が付加される
 ・host…接続先のホスト名(IPアドレス)
 ・port…通信に使用するポート番号。

◆文字列の受信
「TCP/IPサーバ初期化」ブロックの間に「TCP/IPサーバ受信」ブロックを入れて使用してください。
「TCP/IPサーバ初期化」ブロックの設定内容である「port」は、必ず送信側の設定と同一になるようにしてください。

受信した文字列はあくまで条件分岐のみに使用されるため「任意の文字列を変数に格納する」といった処理は、既存のブロックのみでは実現できません。

ソースコードを確認したところ「GlobalVariable.recvString」が受信した文字列の格納変数となっているようですので、「自由記述ブロック」等を使用して代入することは可能であると思われます。

以上の設定が正しく行われていても送受信が上手くいかない場合は、ご利用されているネットワーク環境に問題がある可能性があります(ポートが閉じられているなど)。
そういったネットワーク環境のトラブルにつきましては、サポート対象外となっております、予めご了承ください。
ジメネス フェリックス
2017.07.06
ありがとうございます。
では自由記述ブロックを使用すれば、「1」とPCで打ち込めば動作1をし、「2」を打てば動作2をすることもできるということでしょうか?
 
Sotaサポート
2017.07.10
ジメネス フェリックス様

Sotaサポートです。

そのように「受信した文字列に合わせて処理を分岐する」動作であれば、自由記述ブロックは必要ありません。
「TCPサーバ受信」ブロック内の条件分岐にて「"1"に等しい」、「"2"に等しい」と設定すれば可能と思われます。


自由記述ブロックが必要になる例としては「受信した文字列を発話させる」など、受信データをそのまま変数として使用する際に必要となります。
ジメネス フェリックス
2017.07.10
ありがとうございます。
TCP/IPのクライアントプログラムを作り、Sotaには受信のブロックをいれ、通信には成功したのですが、クライアント側で”1”と入力しても条件分岐のブロックが動いてくれません。
送信は文字列をバイトに変換しているのですが、受信側ではどのように受け取るのでしょうか?バイトで送られると読み取ることができないのでしょうか?
Sotaサポート
2017.07.11
ジメネス フェリックス様

Sotaサポートです。

受信ブロックでは、VstoneMagicの画面上にも示されている通り、String型にて判定します。

また、以前の回答において「"1"に等しい」、「"2"に等しい」と記載しておりますが
このうち「""」はあくまで文章上の見やすさを考慮したものであり、実際の条件には「1」、「2」と数値のみを入力してください。
ジメネス フェリックス
2017.07.11
動作できました。ありがとうございました。
この質問に回答する
 

Page Top