同じWi-Fiに接続されているWindowsとMac間でソケット通信を行う

プログラミング
Photo by freestocks on Unsplash

こんにちは、コンスキです。

今回は2台のパソコン間で通信を行う手順について説明します。

1台がMacOSのパソコン、もう1台がWindowsのパソコンという条件で通信を行います。

1台のパソコンにおけるソケット通信

まずは、1台のパソコンで行うソケット通信の手順を確認します。

この手順をすでに知っている方はこちらに飛んで下さい。

2台で行うソケット通信では、この手順が少し変わるだけです。

1.次の2つのファイルを作成します。

1つ目:サーバー側のスクリプト

# coding: utf-8

import socket

class Server:
  def __init__(self):
    self.ip = "127.0.0.1"
    self.port = 7700
    self.socket_make(self.ip, self.port)

  def socket_make(self, ip, port):
    self.s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
    self.s.bind((ip, port))
    self.s.listen(1)

    while True:
      print("Waiting connection...")
      conn, addr = self.s.accept()
      print("Connected by {}".format(addr))
      data = conn.recv(1024)
      if not data:
        break
      print(data)
      conn.send(b"I received")

server = Server()

2つ目:クライアント側のスクリプト

# coding: utf-8

import socket

class Client:
  def __init__(self):
    self.server_ip = "127.0.0.1"
    self.server_port = 7700
    self.socket_make(self.server_ip, self.server_port)

  def socket_make(self, ip, port):
    self.s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
    self.s.connect((ip, port))
    self.s.send(b"Hello")
    data = self.s.recv(1024)
    print(data)
    
client = Client()

2.サーバー側のスクリプトを実行する。

ここで、サーバー側とクライアント側でスクリプトを実行する順番が重要です。

サーバーとクライアントの通信は、次のような順番で行われます。

  1. サーバーがクライアントの接続要求を待つ
  2. クライアントが接続要求をする
  3. サーバーが接続を受け付ける
  4. データの送受信を行う

そのため、クライアント側のスクリプトより前に実行する必要があります。

ターミナルやコマンドプロンプトなどのコマンドラインツールを起動して次のようにサーバー側のスクリプトを実行します。

cd スクリプトがあるディレクトリのパス
python3 スクリプトのファイル名

実行すると、コマンドラインツールに「Waiting connection…」と表示されると思います。

3.クライアントが側のスクリプトを実行する。

先ほど起動したコマンドラインツールに加えてもう1つコマンドラインツールを起動します。

サーバー側スクリプト同じように実行します。

cd スクリプトがあるディレクトリのパス
python3 スクリプトのファイル名

実行すると次のように表示されると思います。

サーバー側のコマンドライン  ▶︎ b’Hello’

クライアント側のコマンドライン ▶︎ b’I received’ 

2台のパソコン間でソケット通信する

サーバー側とクライアント側のスクリプトにも、7行目でIPアドレスを設定しています。

ここに、2台のパソコンが接続しているWi-FiのIPアドレスを設定してください。

実行方法は1台のパソコンでやる場合と同じです。

サーバー側のスクリプト ▶︎ クライアント側のスクリプト

の順番で実行します。

Wi-FiのIPアドレス の確認方法

IPアドレスはWindowsのパソコンで確認する方が簡単だと思います。

1.コマンドプロンプトを起動して、次のコマンドを入力します。

ipconfig

「Wireless LAN adapter Wi-Fi」の、IPv4という項目書かれている数字がIPアドレスです。

「数字.数字.数字.数字」という形式になっていると思います。

2.このIPアドレスでスクリプト7行目の「127.0.0.1」を書き換えてください。

コメント

タイトルとURLをコピーしました