Python クライアントサーバソケット機能 TCPプロトコル編(anaconda-jupyter)
目次
TCPとは
クライアントサーバの確認方法
ソースの簡単な説明
ソケット-サーバ機能(001)
# ******************************
# ソケット-サーバ機能(001)
# ******************************
# モジュールのインポート
# 低水準ネットワークインターフェース
import socket
# グローバル変数
# ダイナミックポート番号(49152~65535)
D_PORT_NO = 49152
# クライアントアクセス回数
access_cnt = 0
# ソケットの作成
# AF_INET:ネットワーク層はIPv4を利用
# SOCK_STREAM:TCPプロトコルを利用する
server = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
# 接続させたいホスト名(またはアドレス)とポート番号を設定
server.bind(("127.0.0.1", D_PORT_NO))
# クライアントからの接続の待ち受け開始
# 最大接続数は2に設定
server.listen(2)
print("サーバ起動しました。クライアントの接続待ち")
# クライアント接続時の処理
while True:
# 通信用ソケットの取得
# client:クライアントのソケット情報
# addr(アドレス):リモート接続のアドレス
client, addr = server.accept()
print("クラアインとから接続要求あり")
print("クライアントのソケット情報=", client)
print("リモート接続のアドレス", addr)
# メッセージの作成
access_cnt += 1
sending_message = "Server accessed.(" + str(access_cnt) + ")"
print("送信メッセージ=",sending_message)
# メッセージの送信
client.sendall(sending_message.encode("UTF-8"))
print("送信メッセージ送信完了")
#クライアントの接続を切断
client.close()
print("クライアント切断完了")
ソケット-クライアント機能(002)
# ******************************
# ソケット-クライアント機能(002)
# TCPクライアント
# ******************************
# モジュールのインポート
import socket
# グローバル変数
# 接続先ホストの名前(localhost)
HOST = "127.0.0.1"
# サーバ側のダイナミックポート番号(49152~65535)
D_PORT_NO = 49152
# 受信バッファの大きさ
BUFSIZE = 4096
# ソケットの作成
# AF_INET:ネットワーク層はIPv4を利用
# SOCK_STREAM:TCPプロトコルを利用する
client = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
print("client=", client)
print("ソケットの作成")
# サーバとの接続
client.connect((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=860, family=AddressFamily.AF_INET, type=SocketKind.SOCK_STREAM, proto=0>
ソケットの作成
サーバと接続完了
サーバからの受信データ Server accessed.(1)
サーバの切断完了
クラアインとから接続要求あり
クライアントのソケット情報= <socket.socket fd=1404, family=AddressFamily.AF_INET, type=SocketKind.SOCK_STREAM, proto=0, laddr=('127.0.0.1', 49152), raddr=('127.0.0.1', 51738)>
リモート接続のアドレス ('127.0.0.1', 51738)
送信メッセージ= Server accessed.(1)
送信メッセージ送信完了
クライアント切断完了
送信メッセージ= Server accessed.(2)
Python クライアントサーバソケット機能 TCPプロトコル編(anaconda-jupyter)のまとめ
こんなエラーで困っていませんか?
Input In [1]
client, addr = server.accept()
^
SyntaxError: invalid non-printable character U+00A0