🎄teratailクリスマスプレゼントキャンペーン2024🎄』開催中!

\teratail特別グッズやAmazonギフトカード最大2,000円分が当たる!/

詳細はこちら
IPv4

IPv4(Internet Protocol version 4)は、インターネットプロトコルの一つ。インターネットに繋がったコンピューターや機器を識別するためのIPアドレスを32ビット表記で表わします。しかしIPv4は、限界があるため、IPv6が次世代プロトコルとして注目されています。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

Q&A

3回答

6105閲覧

2つのPC間でPythonプログラムを相互にやり取りさせる方法

blackcat1999

総合スコア9

IPv4

IPv4(Internet Protocol version 4)は、インターネットプロトコルの一つ。インターネットに繋がったコンピューターや機器を識別するためのIPアドレスを32ビット表記で表わします。しかしIPv4は、限界があるため、IPv6が次世代プロトコルとして注目されています。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

0グッド

0クリップ

投稿2020/12/18 13:33

サーバ、クライアントの操作を二つのPC(windows10,RaspberryPi4)間で行いと考えております。
次のページを参考に、一つのPC(windows10)のみでプログラムを作成し、操作する事は出来たのですが、
Pythonでソケット通信を行う方法【初心者向け】
二つのPC間での操作方法が分かりません。

とりあえず、二つのPCをクロスLANケーブルで接続し、お互いのPCでサーバ(RaspberryPi4)、クライアント(windows10)、各々のプログラムを実行してみましたが、やはり接続されませんでした。

ネットワークに関する知識を少しは勉強したつもりでしたが、
具体的な操作手順が全く分からない状況です。

具体的にどのような操作をすればいいのかお教え頂けないでしょうか。
少し雑な質問になってしまい申し訳ないです。

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

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

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

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

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

TakaiY

2020/12/18 13:37

それだけの情報では何も答えられません。 サーバ・クライアントそれぞれで動かしているコードを提示ください。
blackcat1999

2020/12/18 16:12

コード自体は「Pythonでソケット通信を行う方法【初心者向け】」内のサンプルコードと同一です。
TakaiY

2020/12/19 08:48

同一ということですが、IPアドレスはどのように設定していますか? サンプルの通りに設定しているとすると、通信はできません。サンプルは両方のプログラムが同一のPCで動作することを想定しているようですので。 ネットワークと行っても、『二つのPCをクロスLANケーブルで接続』とのことですが、他の方とのよりとりを見ていると、そもそも二つの装置間のネットワーク接続ができていないようですので、まずは、その設定をする必要がありそうですね。 少なくとも、相互にpingの疎通が取れる状態にする必要があります。
guest

回答3

0

Windows PCとラズパイをLANケーブルで直結させても、お互いに通信できます
実際私は、Wi-Fi等が無くてネットワークが使えない場所でも、Windows PCとラズパイをLANケーブルで直結させて、SSHやVNCを使ってWindowsからラズパイに入って、ラズパイを操作することがあります
以下、その手順を説明しますので、もし必要ならば参考にしてみてください

Windowsもラズパイも、どちらもOSが起動済みで、Wi-Fiがオフになっているとします
本当はWi-Fiがオンでも大丈夫なのですが、下の方で説明するIPアドレスを確認する手順が、Wi-Fiオフの方が分かりやすいので、ここではオフになってるとして説明します

Windowsとラズパイを、LANケーブルで直結します
LANケーブルは、ストレートでもクロスでも、どちらでも大丈夫だと思います
今時のハードは、どちらのケーブルでも自動認識して、うまくやってくれるはず

LANケーブルでつないでから、しばらく待って、(下に書いた方法で)それぞれのIPアドレスを調べて、Windowsはコマンドプロンプトで、ラズパイはターミナルで、
ping 相手のIPアドレス
を実行してみてください
応答があれば、Windowsとラズパイは通信できる状態になってます

もしpingで応答が無ければ、Windowsのファイアウォールの設定を調べて、もしファイアウォールが有効になっていたら、無効にしてから再度pingを実行してみてください
ラズパイは、デフォルトの設定では、たしかファイアウォールは無効なので、自分で追加してなければ大丈夫なはず

それぞれのIPアドレスを調べる手順は、下記の通りです

[Windows]
コマンドプロンプトを起動し、下記を実行
ipconfig /all
いろいろ表示される中に、下記のようなのがあればOK (. は、実際は数字)
自動構成 IPv4 アドレス. . . . . . . .: 169.254..
サブネット マスク . . . . . . . . . .: 255.255.0.0
「自動構成 IPv4 アドレス」の行が、必要なIPアドレスです

[Raspberry Pi]
ターミナルを起動し、下記を実行
ip addr
いろいろ表示される中に、下記のようなのがあればOK (. は、実際は数字)
inet 169.254../16 ...(略)
「inet」の次が、必要なIPアドレスです (「/16」は不要)

なお、pingで応答があっても、実際に通信させるアプリが使うポート番号はpingとは違うので、もしWindowsのファイアウォールが有効なら、そのポート番号を通信に使えるように設定する必要があるかもしれません
WindowsとラズパイをLANケーブルで直結して使う(Wi-Fiはオフ)場合は、他から侵入されることは無いので、ファイアウォールの設定が面倒ならば、その使い方をするときだけファイアウォールを無効にしてしまうと楽です

あと、169.254.*.のIPアドレスは、ルーターとか無しで直結した場合に設定されるものなので、普段は上記のようにして調べても出てきません
また、IPアドレスの
.*の部分は決まってないので、使う都度調べないといけません (前に使ったときのとは変わってる可能性大)

投稿2020/12/28 05:08

jbpb0

総合スコア7653

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

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

guest

0

二つのコンピュータを直接通信させるには、ポート開放、IP固定などの設定が必要になります。なので、一般的にサーバを用意しそれを介して間接的に通信します。

投稿2020/12/18 14:20

rtgsdfsdg

総合スコア174

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

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

blackcat1999

2020/12/18 16:09

ご回答ありがとうございます。 最終的には片方をサーバー、片方をクライアントにしたいと考えております。 「ポート開放、IP固定など」という点に関して、 どの様な操作が必要なのか具体的にお教え頂けないでしょうか。
rtgsdfsdg

2020/12/19 04:35

サーバーのポート開放、IP固定が必要です。 今回はLAN内の通信ということで、ルーターのポート開放は必要ありません。 説明すると非常に長くなりますので、検索ワードを提示しておきます。それらを調べたうえで分からないことがあれば気軽に聞いてください。 まずは、"raspberrypi ip固定"って検索しましょう。これにはルーター側の設定も必要になるので"<ルーターの型番> ip固定"って検索しましょう。次に、"raspberrypi ufw"って検索しましょう。これはファイアーウォールって言って外部/内部からのアクセスを制御します。アクセスを許すことをポート開放って言います。
rtgsdfsdg

2020/12/19 04:37

また、最初は一つのコンピュータ内のみでクライアントとサーバーのアプリを起動し通信してみるのもありかもしれませんね。これであれば、ポート開放もIP固定も必要ありません。
rtgsdfsdg

2020/12/19 04:39 編集

言い忘れてましたが、IP固定はなくても大丈夫です。ですが、一応やっておいた方がいいです。何かと便利です。
guest

0

PCをLANケーブルで繋いだだけでは通信できません。
IPアドレスやら、ネットワークの設定を適切に行わないとダメです。

とりあえず、あなたんちのネット回線につないで、双方ネット閲覧できるようにしましょう。
それで通信できる状態になります

投稿2020/12/18 14:02

y_waiwai

総合スコア88038

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

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

blackcat1999

2020/12/18 16:06

ご回答ありがとうございます。 どちらも同一のネット回線に繋がってはおります。 ただ、その後の「IPアドレスやらネットワーク設定」という点に関しての 具体的な操作手順が分からず行き詰っております。 色々と調べてみても概要ばかりで、 結局どういった状態にすればいいのかお教え頂けないでしょうか。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

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

ただいまの回答率
85.36%

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

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

質問する

関連した質問