質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
UWP

UWPは、Universal Windows Platformの略。様々なデバイス向けに提供されているアプリケーションを共通のフレームワーク上で動作可能にする仕組みで、Windows10で導入されました。

Visual Studio

Microsoft Visual StudioはMicrosoftによる統合開発環境(IDE)です。多種多様なプログラミング言語に対応しています。

WPF

Windows Presentation Foundation (WPF) は、魅力的な外観のユーザー エクスペリエンスを持つ Windows クライアント アプリケーションを作成するための次世代プレゼンテーション システムです

Q&A

解決済

3回答

10185閲覧

C#でPC間通信がしたい

inugasima

総合スコア8

UWP

UWPは、Universal Windows Platformの略。様々なデバイス向けに提供されているアプリケーションを共通のフレームワーク上で動作可能にする仕組みで、Windows10で導入されました。

Visual Studio

Microsoft Visual StudioはMicrosoftによる統合開発環境(IDE)です。多種多様なプログラミング言語に対応しています。

WPF

Windows Presentation Foundation (WPF) は、魅力的な外観のユーザー エクスペリエンスを持つ Windows クライアント アプリケーションを作成するための次世代プレゼンテーション システムです

0グッド

4クリップ

投稿2017/12/14 04:50

編集2017/12/14 09:22

C#をつかって二つのPC間で通信をしたいと思っています.
どんな手法があるのか知りたいです.


最終的にはC二つのPC間でリアルタイムに映像通信
(片方のPCがもう片方に一方的に映像を送る)をしたいと思っています.

映像はフレームの描画の度に更新される色データのbyte配列として保持しています.
解像度は640×480です.

動画ファイルとして生成して送信するのではなく
リアルタイムに映像通信をしたいので
1秒間に何回もbyte配列を相手に送ることになるのではないかと思います.

###質問
PC同士の通信をするプログラムは書いたことが無いので
以下のことについて質問したいです.

  1. C#においてPC同士で通信する手段は何があるのか?
  2. 上記の方法でリアルタイム映像通信は可能なのか?
  3. skypeなどリアルタイムに映像通信をしているアプリはどのように行っているのか?

二つのPCの距離は近距離(同じ部屋いるくらい)です.
できればWPFで実装したいですが,絶対に無理ならUWPで実装しようと考えています.


映像通信がしたいと書きましたが優先して知りたいのは1の
「C#でPC同士の通信をする手段はなにがあるのか」です

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答3

0

ベストアンサー

WebRTCを使用すると良いと思います。
遅延1秒未満で映像・音声を送受信出来ます。

投稿2017/12/14 07:17

sublimer

総合スコア403

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

sublimer

2017/12/14 07:19 編集

すみません。 Bluetoothのタグを見落としていました。 WebRTCを使用するためには、BluetoothのPANなどでLANを構築する必要があります。
inugasima

2017/12/14 09:22

回答ありがとうございます Bluetoothのタグは、 通信をするならBluetoothなどを使用するのではないかと思い(PC間が近距離でいいため) 少しでもタグを多くするためにつけました. それ以外の通信手法についてもどんな手法があるのか知らないので教えていただけるのはありがたいです.
inugasima

2017/12/14 09:23

ややこしいと思いBluetoothのタグを削除しました
sublimer

2017/12/14 12:28

インターネットが使用できるのであれば、WebRTCでリアルタイム映像配信システムが簡単に作れます。 こちらのSkyWayというサービスのサンプルを動かすだけです。 https://webrtc.ecl.ntt.com/ 言語はC#ではなくJavaScriptになりますが、サンプルを動かすだけであれば、それほど深い知識は必要ありません。 デスクトップアプリが必要。ということでしたら、Electronというものを使えばデスクトップアプリ化できます。 https://qiita.com/gtk2k/items/6b67011b5e1ea0e29e4b また、C#で実装する必要があるのであれば、.NET用のライブラリがあります。 https://github.com/radioman/WebRtc.NET こちらはSkyWayとは互換性はありませんので、必要なサーバなども含めてご自分で準備する必要があります。 いずれにしろ、WebRTCを使用すれば、帯域によりますが、遅延1秒未満で高解像度(Full HDも可)の映像配信が可能です。 ご質問にあるようにbyte配列を送受信するのであれば、UDPで送受信を行ったほうが良いかと思われます。 こちらにサンプルがあります。 https://dobon.net/vb/dotnet/internet/udpclient.html
inugasima

2017/12/14 13:51

たくさんの情報ありがとうございます! どれがいいか調べてみます!
guest

0

640x480[pix/frame] x24[bit/pix] = 7372800[bit/frame] ですから、
およそ 7Mbpsの通信路で毎秒1フレーム(ほとんどパラパラマンガ)となります。
なんらかの圧縮かけないと動画にはほど遠くね?

投稿2017/12/14 05:03

編集2017/12/14 05:48
episteme

総合スコア16614

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

inugasima

2017/12/14 05:54

薄々そんな気はしていました.そのままではリアルタイム映像通信は難しいだろうなと. 画像(byte配列)を圧縮する手法を探してみることにします.
episteme

2017/12/14 05:57

薄々もなにも、電卓はじけば5秒でわかること。
episteme

2017/12/14 06:06

>「C#でPC同士の通信をする手段はなにがあるのか」 まずはTCP/IP(socket)でしょね。その上にどんなプロトコル乗っけるかはまた別の話。
inugasima

2017/12/14 09:24

ありがとうございます.調べてみます.
guest

0

自分も丁度悩んでいた部分なのでクリップさせていただきました。

投稿2019/11/18 10:38

Scald

総合スコア36

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問