Maple für Professional
Maple für Akademiker
Maple für Studenten
Maple Personal Edition
Maple Player
Maple Player für iPad
MapleSim für Professional
MapleSim für Akademiker
Maple T.A. - Testen & beurteilen
Maple T.A. MAA Placement Test Suite
Möbius - Online-Courseware
Machine Design / Industrial Automation
Luft- und Raumfahrt
Fahrzeugtechnik
Robotics
Energiebranche
System Simulation and Analysis
Model development for HIL
Anlagenmodelle für den Regelungsentwurf
Robotics/Motion Control/Mechatronics
Other Application Areas
Mathematikausbildung
Technik
Allgemein- und berufsbildende Schulen
Testen und beurteilen
Studierende
Finanzmodelle
Betriebsforschung
Hochleistungsrechnen
Physik
Live-Webinare
Aufgezeichnete Webinare
Geplante Veranstaltungen
MaplePrimes
Maplesoft-Blog
Maplesoft-Mitgliedschaft
Maple Ambassador Program
MapleCloud
Technische Whitepapers
E-Mail Newsletters
Maple-Bücher
Math Matters
Anwendungs-Center
MapleSim Modell-Galerie
Anwenderberichte
Exploring Engineering Fundamentals
Lehrkonzepte mit Maple
Maplesoft Welcome-Center
Resource-Center für Lehrer
Help-Center für Studierende
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