sendto
- 用途: 主にUDPソケットで使うが、TCPソケットでも使用可能。
- 機能: データを指定されたアドレスに送信する。
-
構文:
sendto(bytes, address[, flags])
-
bytes
: 送信するデータ(バイト形式)。 -
address
: 送信先のアドレス(IPアドレスとポート番号のタプル)。 -
flags
: オプションのフラグ(省略可能)。
-
- 特徴: コネクションレスプロトコル(UDP)に適している。
import socket
# ソケット作成
s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
address = ('localhost', 12345)
# データ送信
s.sendto(b'Hello, World!', address)
s.close()
send
- 用途: 主にTCPソケットで使用。
- 機能: コネクションが確立された相手にデータを送信する。
-
構文:
send(bytes[, flags])
-
bytes
: 送信するデータ(バイト形式)。 -
flags
: オプションのフラグ(省略可能)。
-
- 特徴: TCP接続でデータを送信するが、バッファサイズに制限があるため、全データを一度に送信できないことがある。
import socket
# ソケット作成
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.connect(('example.com', 80))
# データ送信
s.send(b'GET / HTTP/1.1\r\nHost: example.com\r\n\r\n')
s.close()
sendall
- 用途: 主にTCPソケットで使用。
- 機能: すべてのデータが送信されるまでブロックする(部分送信の処理を内部で行う)。
-
構文:
sendall(bytes[, flags])
-
bytes
: 送信するデータ(バイト形式)。 -
flags
: オプションのフラグ(省略可能)。
-
- 特徴: データ全体が送信されることを保証する。送信途中でエラーが発生した場合、例外を発生させる。
import socket
# ソケット作成
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.connect(('example.com', 80))
# データ送信
s.sendall(b'GET / HTTP/1.1\r\nHost: example.com\r\n\r\n')
s.close()
比較まとめ
メソッド | 主な用途 | 特徴 |
---|---|---|
sendto |
UDP、TCP | データを指定されたアドレスに送信。コネクションレス通信に適している。 |
send |
TCP | コネクションが確立された相手にデータを送信。バッファサイズによる制限がある場合がある。 |
sendall |
TCP | データ全体が送信されることを保証。部分送信の処理を内部で行い、送信途中でエラーが発生した場合は例外を発生させる。 |