Maple Professional
Maple Academic
Maple Student Edition
Maple Personal Edition
Maple Player
Maple Player for iPad
MapleSim Professional
MapleSim Academic
Maple T.A. - Testing & Assessment
Maple T.A. MAA Placement Test Suite
Möbius - Online Courseware
Machine Design / Industrial Automation
Aerospace
Vehicle Engineering
Robotics
Power Industries
System Simulation and Analysis
Model development for HIL
Plant Modeling for Control Design
Robotics/Motion Control/Mechatronics
Other Application Areas
Mathematics Education
Engineering Education
High Schools & Two-Year Colleges
Testing & Assessment
Students
Financial Modeling
Operations Research
High Performance Computing
Physics
Live Webinars
Recorded Webinars
Upcoming Events
MaplePrimes
Maplesoft Blog
Maplesoft Membership
Maple Ambassador Program
MapleCloud
Technical Whitepapers
E-Mail Newsletters
Maple Books
Math Matters
Application Center
MapleSim Model Gallery
User Case Studies
Exploring Engineering Fundamentals
Teaching Concepts with Maple
Maplesoft Welcome Center
Teacher Resource Center
Student Help Center
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