Python クライアントサーバソケット機能 UDPプロトコル編(anaconda-jupyter)
目次
UDPとは
マルチキャスト
ブロードキャスト
クライアントサーバの確認方法
ソースの簡単な説明
ソケット-サーバ機能(003)
# ******************************
# ソケット-サーバ機能(003)
# ******************************
# モジュールのインポート
# 低水準ネットワークインターフェース
import socket
# グローバル変数
# ダイナミックポート番号(49152~65535)
D_PORT_NO = 49152
# 受信バッファの大きさ
BUFSIZE = 4096
# クライアントアクセス回数
access_cnt = 0
# ソケットの作成
# AF_INET:ネットワーク層はIPv4を利用
# SOCK_DGRAM:UDPプロトコルを利用する
server = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
# 接続させたいホスト名(またはアドレス)とポート番号を設定
server.bind(("127.0.0.1", D_PORT_NO))
print("サーバ起動しました。クライアントの接続待ち")
# クライアントへの対応処理
while True:
# クライアントからのメッセージ待ち
data, client = server.recvfrom(BUFSIZE)
access_cnt += 1
sending_message = "Server accessed.(" + str(access_cnt) + ")"
print("送信メッセージ=",sending_message)
# クライアントへメッセージの送信
server.sendto(sending_message.encode("utf-8"), client)
print("メッセージ送信完了")
ソケット-クライアント機能(004)
# ******************************
# ソケット-クライアント機能(004)
# UDPクライアント
# ******************************
# モジュールのインポート
import socket
# グローバル変数
# 接続先ホストの名前(localhost)
HOST = "127.0.0.1"
# サーバ側のダイナミックポート番号(49152~65535)
D_PORT_NO = 49152
# 受信バッファの大きさ
BUFSIZE = 4096
# ソケットの作成
# AF_INET:ネットワーク層はIPv4を利用
# SOCK_DGRAM:UDPプロトコルを利用する
client = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
print("client=", client)
print("ソケットの作成")
# サーバとの接続
# "Hello"の文字列をサーバに送信する
client.sendto(b"Hello.", (HOST, D_PORT_NO))
print("サーバにメッセージ送信")
# サーバからのメッセージの受信
server_reception_data = client.recv(BUFSIZE)
print("サーバからの受信データ",server_reception_data.decode("UTF-8"))
#サーバの接続を切断
client.close()
print("サーバ切断完了")
クライアントサーバのテスト
サーバ起動しました。クライアントの接続待ち
client= <socket.socket fd=1344, family=AddressFamily.AF_INET, type=SocketKind.SOCK_DGRAM, proto=0>
ソケットの作成
サーバにメッセージ送信
サーバからの受信データ Server accessed.(1)
サーバ切断完了
送信メッセージ= Server accessed.(1)
メッセージ送信完了
送信メッセージ= Server accessed.(2)