How to build
Build Requirements
- meson (http://mesonbuild.com/)
- ninja (https://ninja-build.org/)
Dependencies
libsox, boost-exceptions, ncursesw, libavcodec, libsixel, ffmpeg, ffmpeg command with mpeg2video output
Ubuntuなら
$ sudo apt install libsox-dev libboost-exception-dev libncursesw5-dev libavcodec-dev libsixel-dev ffmpeg
Build
$ mkdir build
$ cd build
$ meson ..
$ ninja
$ ninja test
Basic Concepts
- 通話の実現
- 公衆電話のようにお金を入れないと切断
- ファイルの送受信
- 画面キャプチャ
Advantages
-
single TCP connection
-
semi-fixed port, no "Address in use" error
-
multi-threaded application (ただしデバイス入力スレッドおよび出力スレッド、ログフラッシュスレッド (g3log) のみ)。 ネットワーク系と画面入出力はselectやncursesを利用したノンブロッキングIOを活用してシングルスレッド。
Execution
$ cd build
$ src/main
Commands
Connections
listen [<port:12345>]
指定したポートで待ち受ける
connect <ipaddress> [<port:12345>]
指定したIPアドレスに接続
debug
デバッグ用:マイクを使用しない (connect/listenの前に行う)
Public Phone
enable_timeout
公衆電話機能を有効にする
10yen
100yen
5000000000000000yen
指定した金額を投入する
After Connection
sendfile
指定したファイルを相手に送信する。
video
画面キャプチャを開始する (ffmpegコマンド必須) 。受信側は コマンド画面から抜けて 画面キャプチャを表示する (現時点では黒色のみ、mltermなどsixel formatに対応した端末が必要)