Kuina-chan

くいなちゃん2018年12月11日


プログラミング言語Kuin」の言語仕様109、「netライブラリ」についてです。

1netライブラリ

ネットワーク通信を行うライブラリ「net.kn」を解説します。
名前 説明
net@Http HTTP通信でデータを受信するクラス
net@Http.fin データの受信を終了するメソッド
net@Http.get データを受信するメソッド
net@Tcp TCP通信を行うクラス
net@Tcp.connecting 接続状態かどうかを取得するメソッド
net@Tcp.fin 接続を切断するメソッド
net@Tcp.receive データを受信するメソッド
net@Tcp.send データを送信するメソッド
net@TcpServer TCPサーバの処理を行うクラス
net@TcpServer.fin 接続の待ち受けを終了するメソッド
net@TcpServer.get TCPクライアントとの接続を取得するメソッド
net@makeHttp HTTP通信を開始する関数
net@makeTcpClient TCPクライアントを作成する関数
net@makeTcpServer TCPサーバを作成する関数

2net@Http

「net@Http」は、HTTP通信でデータを受信するクラスです。

2.1net@Http.fin



「net@Http.fin」は、データの受信を終了するメソッドです。

fin()

既に受信を終了しているとき、このメソッドは何もしません。
受信はnet@Httpクラスのインスタンスが解放されるときに自動で終了します。 このメソッドは、終了するタイミングを明示的に制御したいときにお使いください。

2.2net@Http.get



「net@Http.get」は、データを受信するメソッドです。

func get(): []char

戻り値 受信したデータ。 受信が完了していない場合はnullが返る

3net@Tcp

「net@Tcp」は、TCP通信を行うクラスです。

3.1net@Tcp.connecting



「net@Tcp.connecting」は、接続状態かどうかを取得するメソッドです。

func connecting(): bool

戻り値 接続した状態ならtrue、切断されたならfalse

3.2net@Tcp.fin



「net@Tcp.fin」は、接続を切断するメソッドです。

func fin()

既に切断されているとき、このメソッドは何もしません。
接続はnet@Tcpクラスのインスタンスが解放されるときに自動で切断されます。 このメソッドは、切断するタイミングを明示的に制御したいときにお使いください。

3.3net@Tcp.receive



「net@Tcp.receive」は、データを受信するメソッドです。

func receive(size: int): []bit8

size 受信するデータのサイズ
戻り値 受信したデータ。 通信が切断されているときや、size分のデータが受信できなかったときはnullが返る
net@Tcpクラスのインスタンスは内部に1MBのバッファを保持しており、受信可能なデータがあるとこのバッファに溜めていきます。 receiveメソッドは、このバッファにsize分のデータがあれば切り取って返し、なければ何もせずにnullを返します。
このため、1MBを超えるデータを一度に取得することはできません。 1MB以下の単位で分割取得してください。
表3-1: net@Tcp.receiveの例外
発生条件 ビルド 例外コード
(16進数)
sizeが0以上1024*1024以下の範囲外 dbgのみ E9170006

3.4net@Tcp.send



「net@Tcp.send」は、データを送信するメソッドです。

func send(data: []bit8)

data 送信するデータ。 nullであってはならない
通信が切断されているときは、このメソッドは何もせずに抜けます。

4net@TcpServer

「net@TcpServer」は、TCPサーバの処理を行うクラスです。

4.1net@TcpServer.fin



「net@TcpServer.fin」は、接続の待ち受けを終了するメソッドです。

func fin()

既に待ち受けを終了しているとき、このメソッドは何もしません。
待ち受けはnet@TcpServerクラスのインスタンスが解放されるときに自動で終了します。 このメソッドは、終了するタイミングを明示的に制御したいときにお使いください。

4.2net@TcpServer.get



「net@TcpServer.get」は、TCPクライアントとの接続を取得するメソッドです。

func get(): tcp@Tcp

戻り値 TCPクライアントとの通信を行うクラスのインスタンス。 待ち受け状態になっていないときや、TCPクライアントからの接続がなければnullが返る
net@TcpServerクラスのインスタンスは待ち受け状態のときに、常にTCPクライアントからの接続要求を監視しています。 接続要求があると直ちに通信を開始し、その情報を記録しつつ、引き続き接続要求の待ち受けを続けます。
getメソッドを呼ぶと、記録したTCPクライアントの情報を1つ切り取って、データが送受信できるインスタンスの形で返します。 記録した情報が1つもなければ何もせずにnullを返します。

5net@makeHttp

「net@makeHttp」は、HTTP通信を開始する関数です。

func makeHttp(url: []char, post: bool, agent: []char): net@Http

url データを取得するURL
post POSTならtrue、GETならfalse
agent サーバに送るユーザエージェント。 nullを指定すると空文字が送られる
戻り値 データを受信するクラス

6net@makeTcpClient

「net@makeTcpClient」は、TCPクライアントを作成する関数です。

func makeTcpClient(host: []char, port: int): net@Tcp

host サーバのホスト名またはIPアドレス
port 接続するポート番号
戻り値 TCP通信を行うクラスのインスタンス。 接続に失敗した場合はnullが返る
表6-1: net@makeTcpClientの例外
発生条件 ビルド 例外コード
(16進数)
portが0以上65535以下の範囲外 dbgのみ E9170006

7net@makeTcpServer

「net@makeTcpServer」は、TCPサーバを作成する関数です。

func makeTcpServer(port: int): net@TcpServer

port 接続を待ち受けるポート番号
戻り値 TCPサーバ。 設定に失敗した場合はnullが返る
この関数を呼び出した時点で接続の待ち受けが開始されます。
49152以上のポート番号は動的に決定されることを前提としており、明示的に設定することはできません。
表7-1: net@makeTcpServerの例外
発生条件 ビルド 例外コード
(16進数)
portが0以上49152未満の範囲外 dbgのみ E9170006
1544539503jaf