/ipphone

i1i2i3実験用

Primary LanguageC++MIT LicenseMIT

Build Status

How to build

Build Requirements

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に対応した端末が必要)