Help us understand the problem. What is going on with this article?

Python製WebRTC ライブラリ aiortc のデータチャネルを介したファイル転送(P2P直接通信)を行うサンプルプログラムを動かしてみる

More than 1 year has passed since last update.

環境

2者とも同一マシンで、シェルのセッションが別なだけ。カレントディレクトリは同じ。
OSはMacOS Mojave。Pythonのバージョンは3.5。

WebRTC関係の情報

  • TURNサーバを使わないので、UDPホールパンチングが通る2者間でないと転送は失敗すると思います(今回は同一マシンですが・・・)
  • aiortcのコードを確認しましたが、UDPホールパンチングのための情報を教えてくれるSTUNサーバは、明に指定しない場合、googleが提供?しているテスト用公開サーバ ( stun:stun.l.google.com:19302 ) を利用するようです。
  • 以下でやっているSDP情報の2者間での交換は、通常?のWebRTCを利用したシステムではシグナリングサーバなどが仲介して行うわけですが、今回はそれを手動でやっています。

手順

$ git clone https://github.com/aiortc/aiortc.git
$ cd aiortc/examples_mod/datachannel-filexfer

$ brew install ffmpeg opus libvpx pkg-config

python3系列でないとaiortcのインストールがこけるようなので注意
必要ならpyenv-virtualenv等で専用の環境を作った方がいいかも。
$ pip install aiortc uvloop
  • 送信側
$ python filexfer.py send ../apprtc/README.rst
-- Please send this message to the remote party --
{"sdp": <JSONでずらずらと情報が並んでいます>, "type": "offer"}

-- Please enter a message from remote party --
  • 受信側
カレントディレクトリのものは消しておく
$ rm README.rst
$ python filexfer.py receive README.rst
-- Please enter a message from remote party --

起動時はここまでの出力。
そこで、最初に送信側で標準出力に出たSDP情報をコピペしてリターン。
すると、送信側にに渡すSDPが出力された。

{"sdp": <JSONでずらずらと情報が並んでいます>, "type": "offer"}

-- Please send this message to the remote party --
{"sdp": <JSONでずらずらと情報が並んでいます>, "type": "answer"}

-- Please enter a message from remote party --

送信側に渡す用のSDP情報をコピペして、送信側のターミナルでコピペしてリターン。

したら受信側に以下の出力が出た。

received 972 bytes in 0.0 s (0.730 Mbps)
-- Please send this message to the remote party --
{"type": "bye"}

最後に、これを送信側にコピペしてリターンしたら送信側はプログラムが終了。
受信側はそのまま。
とりあえず、Ctrl-Cで終了させた。

ファイルを受信できたか受信側で確認(元々カレントディレクトリにREADME.rstは存在しなかった)。

$ less README.rst
=> 内容は問題なし!

以上!

ryo_grid
svengali,kikker,はてブおせっかい,TOFU-G,ひらめいったー,キャチボ,顔面偏差値スカウター, UZOMUZO等の作者.機械学習でシステムトレードしたりも.元の専門はHPC (修士).機械学習,分散システム, physical computing,仮想通貨, 投資とか好き.Scrum-Upプロジェクト参画中. ryo.contact[at]gmail.com
https://ryogrid.net
orylab
オリィ研究所は距離や身体的問題を克服し、あいたい人に会え、行きたいところに行ける未来を実現します。
http://orylab.com
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした