0
0

Pythonの recv と recvfrom の違い

Posted at

recvの概要

  • 用途: recvは主にTCPソケットで使用する。
  • 機能: データを受信するが、送信元のアドレス情報は取得しない。
  • 構文: recv(bufsize[, flags])
    • bufsize: 受信するデータの最大バイト数。
    • flags: オプションのフラグ(省略可能)。
  • 特徴: 接続指向プロトコル(TCP)を使っているため、接続が確立された相手からのデータを受信する。
import socket

# ソケット作成
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.connect(('example.com', 80))

# データ受信
data = s.recv(1024)
print('Received', repr(data))
s.close()

recvfromの概要

  • 用途: recvfromは主にUDPソケットで使用する。
  • 機能: データを受信し、送信元のアドレス情報も取得する。
  • 構文: recvfrom(bufsize[, flags])
    • bufsize: 受信するデータの最大バイト数。
    • flags: オプションのフラグ(省略可能)。
  • 特徴: コネクションレスプロトコル(UDP)を使っているため、どのアドレスからデータが送信されたかを知ることができる。
import socket

# ソケット作成
s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
s.bind(('localhost', 12345))

# データ受信
data, addr = s.recvfrom(1024)
print('Received', repr(data), 'from', addr)
s.close()

recvrecvfromの違い

  1. プロトコル:

    • recv: TCP
    • recvfrom: UDP
  2. アドレス情報:

    • recv: 送信元のアドレス情報を取得しない。
    • recvfrom: 送信元のアドレス情報を取得する。
  3. 接続:

    • recv: 接続指向。事前に接続を確立する必要がある。
    • recvfrom: コネクションレス。データを受信するだけで送信元を特定できる。
0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0