pythonはクライアントとサービスの通信を実現します。
関数紹介
ソケットの対象方法:
サービス:
関数
説明
.bind()
アドレスキーをバインドし、AF_INETの下では元のグループとしてアドレスを表示します。よく使うbind((host,port))
.listen()
TCPを傍受して、保留することができる最大の接続数、この値は少なくとも1で、普通は5に設定すればいいです。
.accept()
受動的にTCPクライアントの接続を受け入れる
クライアント:
関数
説明
.connect()
初期化サーバ接続
.connect_ex()
はconnect()関数への拡張です。エラー時にエラーコードを返します。異常を報告しません。
その他の関数:
関数
説明
recv()
受信データは文字列で返され、受信した最大データ量をbufsizeが指定します。
.send()
データを送信して、string中のデータを接続のソケットに送信します。戻り値は送信するバイト数です。通常は.encode()関数を使用してデータをトランスコードします。
senddall()
完全なデータを送信し、戻る前にすべてのデータを送信しようとします。
recvfrom()
recv()関数と同様に、戻り値は(data,address)であり、dataは受信データを含む文字列であり、addressは送信データのソケットアドレスである。
sendto()
UDPデータを送信して、ソケットにデータを送ります。形式はiPad、portのタプルです。
.close()
ソケットを閉じる
職務に服する
socket関数を使用してsocketオブジェクトを作成して、socketサービスを設定して、bind関数によってポートを指定して、socketオブジェクトのaccept方法を使って、クライアントの接続を待って、connectionオブジェクトに戻ります。
具体的な手順は:
クライアント
以上のサービスを接続するためのクライアントサービスを作成し、そのサービスを利用してTCP接続をホストに開き、接続後にサービスからデータを取得し、操作が完了したら接続を終了します。具体的な手順は、クライアントのソケットCient=socketを作成し、サーバclient.co nnect()に接続してデータclient.send()client.recv()クライアントソケットクローズclient.close()``
cmdコマンドラインを使ってコードのあるファイルディレクトリに開いて、pythonサービスエンドファイル名.pyを実行して、もう一つのcmdコマンドインターフェイスを開けて、pythonクライアントファイル名を実行します。py
pycharmでサービスエンドコードを実行し、実行結果:
cmdでクライアントコードを実行し、実行結果:
以上はpythonクライアントとサービス端末の通信の詳細を実現しました。pythonクライアントとサービス端末に関する資料は他の関連記事に注目してください。
ソケットの対象方法:
サービス:
関数
説明
.bind()
アドレスキーをバインドし、AF_INETの下では元のグループとしてアドレスを表示します。よく使うbind((host,port))
.listen()
TCPを傍受して、保留することができる最大の接続数、この値は少なくとも1で、普通は5に設定すればいいです。
.accept()
受動的にTCPクライアントの接続を受け入れる
クライアント:
関数
説明
.connect()
初期化サーバ接続
.connect_ex()
はconnect()関数への拡張です。エラー時にエラーコードを返します。異常を報告しません。
その他の関数:
関数
説明
recv()
受信データは文字列で返され、受信した最大データ量をbufsizeが指定します。
.send()
データを送信して、string中のデータを接続のソケットに送信します。戻り値は送信するバイト数です。通常は.encode()関数を使用してデータをトランスコードします。
senddall()
完全なデータを送信し、戻る前にすべてのデータを送信しようとします。
recvfrom()
recv()関数と同様に、戻り値は(data,address)であり、dataは受信データを含む文字列であり、addressは送信データのソケットアドレスである。
sendto()
UDPデータを送信して、ソケットにデータを送ります。形式はiPad、portのタプルです。
.close()
ソケットを閉じる
職務に服する
socket関数を使用してsocketオブジェクトを作成して、socketサービスを設定して、bind関数によってポートを指定して、socketオブジェクトのaccept方法を使って、クライアントの接続を待って、connectionオブジェクトに戻ります。
具体的な手順は:
serversocket=socket()
serversocket.bind()
serversocket.listen()
while ,
while True:
serverclient=serversocket.accept()
while True:
#
serverclient.recv()
serverclient.send()
#
serverclient.close()
serversocket.close()
具体的なコードの実現:
import socket
import sys
import time
serversocket=socket.socket(socket.AF_INET,socket.SOCK_STREAM)
host=socket.gethostname()#
port=9999
#
serversocket.bind((host,port))
#
serversocket.listen(5)
while True:
print(' , ')
clientsocket,addr=serversocket.accept()
print(' :%s' % str(addr))
while True:
try:
data=clientsocket.recv(1024)
except Exception:
print(' :',addr)
break
print(' :',data.decode('utf-8'))
reply=input(' :').strip()
if not reply:
break
msg=time.strftime('%Y-%m-%d %X')#
msg1='[%s]:%s'% (msg,reply)
clientsocket.send(msg1.encode('utf-8'))
clientsocket.close()
serversocket.closel()
実現機能:Whileによりクライアントから送信されたデータを循環的に受信し、クライアントから送信されたデータを表示してクライアントデータに戻し、クライアントへのデータ情報を戻してタイムスタンプを加える。クライアント
以上のサービスを接続するためのクライアントサービスを作成し、そのサービスを利用してTCP接続をホストに開き、接続後にサービスからデータを取得し、操作が完了したら接続を終了します。具体的な手順は、クライアントのソケットCient=socketを作成し、サーバclient.co nnect()に接続してデータclient.send()client.recv()クライアントソケットクローズclient.close()``
import socket
import sys
s=socket.socket(socket.AF_INET,socket.SOCK_STREAM)
host=socket.gethostname()
port=9999
s.connect((host,port))
while True:
data= input('>>').strip()
if not data:
break
s.send(data.encode('utf-8'))
msg=s.recv(1024)
if not msg:
break
print(msg.decode('utf-8'))
s.close()
テストcmdコマンドラインを使ってコードのあるファイルディレクトリに開いて、pythonサービスエンドファイル名.pyを実行して、もう一つのcmdコマンドインターフェイスを開けて、pythonクライアントファイル名を実行します。py
pycharmでサービスエンドコードを実行し、実行結果:
cmdでクライアントコードを実行し、実行結果:
以上はpythonクライアントとサービス端末の通信の詳細を実現しました。pythonクライアントとサービス端末に関する資料は他の関連記事に注目してください。