スクリプトガイド > JMPの拡張 > JSLでのソケットの使用
公開日: 04/01/2021

JSLでのソケットの使用

データをフィードするもう1つの方法は、ソケット通信です。JSLでは、2種類のソケットが作成できます。

ストリーム

ストリームソケットは、JMPともう1つのコンピュータとの間で信頼性の高い接続を確立します。JMPを実行しているコンピュータ、業務用機器、データ収集用コンピュータ、プリンタといったソケット通信が可能なデバイスと通信できます。ソケット通信を行えるHTTP Webサーバーなどとも通信できます。

データグラム

データグラムソケットも、JMPともう1つのコンピュータとの間に接続を確立しますが、信頼性はやや劣ります。データグラムはコネクションレスで、情報が何度も届いたり、まったく届かなかったり、順不同で届いたりします。データグラム接続には、信頼性が保証されているストリーム接続のようなオーバーヘッドが備わっていません。データグラムは、コネクションレスのため、(同じソケットであっても)接続先のアドレスを毎回指定する必要があります。

ソケットを作成すると、別のソケットに接続するか、別のソケットからの接続を待機することができます。以下に、別のコンピュータのWebサーバーに接続してデータを取得するという簡単なプログラム例を示します。

tCall = Socket( );
tCall << Connect( "www.jmp.com", "80" );
tCall << Send( Char To Blob( "GET / HTTP/1.0~0d~0a~0d~0a", "ASCII~HEX" ) );
tMessage = tCall << Recv( 1000 );
text = Blob To Char( tMessage[3] );
Show( text );
tCall << Close( );

1行目は、ソケットを作成し、それに参照名(tCall)を与えます。デフォルトでは、ストリームソケットが作成されます。ソケットの種類を指定するには、オプションの引数socket(STREAM)またはsocket(DGRAM)を使います。

2行目は、tCallソケットをJMP Webサイトのポート80(通常はHTTPポート)に接続します。

3行目は、JMP WebサーバーにGET要求を送信します。このメッセージは、JMP Webサーバーに対し、JMPホームページを返信するように要求します。GETの後の / は、開くページのパスでなければなりません。/ はルートページを開きます。

4行目は、JMP Webサーバーから最大1000バイトを受信し、情報のリストをtMessageに格納します。ソケットの呼び出しは、それぞれリストを戻します。リストの最初の要素は、呼び出しの名前です。2番目の要素はテキストメッセージで、okだけのことも、長い診断メッセージのこともあります。場合によっては、各呼び出しに応じた追加の要素が存在します。この例では、リストの3番目の要素が受信したデータです。

5行目は、受信したバイナリ情報を文字列に変換します。tMessage[3]は、Recvによって戻されるリストの3番目の要素で、JMP Webサーバーからのデータです。

6行目はログにデータを表示します。

最後の行はソケットを閉じます。接続先のWebサーバーはすでに閉じているため、このソケットには再接続か適切な廃棄(close)が必要です。

その他のメッセージや例については、[ヘルプ]メニューの[スクリプトの索引]を参照してください。JMPのSamples/Scriptsフォルダにソケットを使用したスクリプトの例がいくつかあります。

より詳細な情報が必要な場合や、質問があるときは、JMPユーザーコミュニティで答えを見つけましょう (community.jmp.com).