Home English

Kuina-chan

くいなちゃんDec 15, 2017


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

netライブラリ

ネットワーク通信を行うライブラリ「net.kn」を解説します。
netライブラリに用意されているものはnetライブラリの通りです。
netライブラリ
名前 説明
net@makeTcpClient TCPクライアントを作成する関数
net@makeTcpServer TCPサーバを作成する関数
net@Tcp TCP通信を行うクラス
net@TcpServer TCPサーバの処理を行うクラス

net@makeTcpClient

「net@makeTcpClient」は、TCPサーバへ接続した状態のTCPクライアントを作成する関数です(net@makeTcpClient関数の定義)。
net@makeTcpClient関数の定義

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

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

net@makeTcpServer

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

 func makeTcpServer(port: int): net@TcpServer

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

net@Tcp

「net@Tcp」はTCP通信を行うクラスで、定義はnet@Tcpクラスの定義の通りです。
net@Tcpクラスの定義
名前 説明
net@Tcp.connecting 接続状態かどうかを取得するメソッド
net@Tcp.fin 接続を切断するメソッド
net@Tcp.receive データを受信するメソッド
net@Tcp.send データを送信するメソッド

net@Tcp.connecting

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

 func connecting(): bool

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

net@Tcp.fin

「net@Tcp.fin」は接続を切断するメソッドです(net@Tcp.finメソッドの定義)。
net@Tcp.finメソッドの定義

 func fin()

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

net@Tcp.receive

「net@Tcp.receive」はデータを受信するメソッドです(net@Tcp.receiveメソッドの定義)。
net@Tcp.receiveメソッドの定義

 func receive(size: int): []bit8

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

net@Tcp.send

「net@Tcp.send」はデータを送信するメソッドです(net@Tcp.sendメソッドの定義)。
net@Tcp.sendメソッドの定義

 func send(data: []bit8)

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

net@TcpServer

「net@TcpServer」はTCPサーバの処理を行うクラスで、定義はnet@TcpServerクラスの定義の通りです。
net@TcpServerクラスの定義
名前 説明
net@TcpServer.fin 接続の待ち受けを終了するメソッド
net@TcpServer.get TCPクライアントとの接続を取得するメソッド

net@TcpServer.fin

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

 func fin()

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

net@TcpServer.get

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

 func get(): tcp@Tcp

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