Maple Professionel
Maple Académique
Maple Edition Étudiant
Maple Personal Edition
Maple Player
Maple Player for iPad
MapleSim Professionel
MapleSim Académique
Maple T.A. - Suite d'examens de classement
Maple T.A. MAA Placement Test Suite
Möbius - Didacticiels de mathématiques en ligne
Machine Design / Industrial Automation
Aéronautique
Ingénierie des véhicules
Robotics
Energie
System Simulation and Analysis
Model development for HIL
Modélisation du procédé pour la conception de systèmes de contrôle
Robotics/Motion Control/Mechatronics
Other Application Areas
Enseignement des mathématiques
Enseignement de l’ingénierie
Enseignement secondaire et supérieur (CPGE, BTS)
Tests et évaluations
Etudiants
Modélisation financière
Recherche opérationnelle
Calcul haute performance
Physique
Webinaires en direct
Webinaires enregistrés
Agenda des évènements
Forum MaplePrimes
Blog Maplesoft
Membres Maplesoft
Maple Ambassador Program
MapleCloud
Livres blancs techniques
Bulletin électronique
Livres Maple
Math Matters
Portail des applications
Galerie de modèles MapleSim
Cas d'Etudes Utilisateur
Exploring Engineering Fundamentals
Concepts d’enseignement avec Maple
Centre d’accueil utilisateur Maplesoft
Centre de ressources pour enseignants
Centre d’assistance aux étudiants
Sockets[Serve] - Maple サーバの確立
使い方
Serve(port, server)
パラメータ
port - 正の整数; サービスを利用可能としたいポート番号
server - Maple の手続き (または他の式); サービスとして用いる単独のリクエスト
説明
ユーザ独自の Maple サービスを確立するために、Serve コマンドを用いて、指定されたポート上にサーバを走らせることが可能です。このコマンドは2つの引数を必要とします: 1つはリクエストを聞く側のポート番号 port、もう1つは入ってくる単独のリクエストである Maple の手続き server です。Serve( port, server ) という呼び出しは、指定されるポート上でサービスを確立し(それを行う権限をもつことを仮定しています)、ポート上のリクエストを聞く用意をします。リクエストが到着すると、入ってくるリクエストのソケット ID を唯一の引数として持つ、コールバック server が呼び出されます。server 手続きは、サービスを提供し、エラーなしで返されます。
サービスが中断されると、server コールバック内で問題が提起され、Serve コールを発効する Maple の処理にまでその問題が伝達されます。
注意: ライセンスの理由により、Serve は本当のサーバを確立するものではありません; ユーザは、手動でその Maple のサーバ処理をバックグランドに起動しなくてはなりません。 また、同時に1つだけの入ってくるリクエストが扱われます。UNIX プラットフォーム上であっても、、新しい分岐や処理を個々のリクエストにサービスとして作成することはできません。
手続き Serve は、結果を求めて呼び出されますが、何の値も返しません。
手続き Sockets[GetPeerHost] および Sockets[GetPeerPort] は、入ってくるクライアントリクエストを認証する際に有用です。
開かれているソケットを調査するために ``netstat'' のようなシステムツールを使用する場合、リクエストを提供するサーバが終了した後で ``TIME_WAIT'' 状態の中に割り当てられた接続に注意が必要です。これは、TCP プロトコルの通常の結果で、接続が閉じられた後にも一定の期間(``maximum segment lifetime'、またはデフォルトの4分、の2つの場合)、割り当てられたソケットを``TIME_WAIT'' 状態の中に保持しています。ソケットが TIME_WAIT の状態にあるとき、オペレーティングシステムは、割り当てられたソケットアドレスで到着するネットワークパケットを古い接続と同じアドレスを持つ新しい接続には結び付けるのではなく、もとのソケットに結びつけます。さらに詳細な情報については、 RFC 761 (``Transmission Control Protocol'') Most modern TCP implementations use the so-called ``SYN->RCVD'' transition that allows the operating system to open a new connection directly from the TIME_WAIT state providing that certain conditions are met を参照して下さい。また、詳細については、RFC 1122 (``Requirements for Internet Hosts -- Communication Layers''), Section 4.2.2.13 も参照して下さい。
例
この例では、簡単な挨拶のサーバを示しています。
server := proc( sid ) use Sockets in Write( sid, sprintf( "Hello %s on port %d, from %s\r\n", GetPeerHost( sid ), GetPeerPort( sid ), GetHostName() ) ) end use end proc:
以下の呼び出しでは、Maple のセッションにサービスのリクエスト開始を発効します。この呼び出しは、何も返しません。
Sockets:-Serve( 2525, server );
参照
用語集 - socket, Sockets パッケージの紹介, Sockets[GetPeerHost], Sockets[GetPeerPort], Sockets[Read], Sockets[references], Sockets[Write]
Download Help Document