Python ソケットを使用して文字列を送信する
- Python のソケット
- Python でソケットを実現するための組み込みメソッド
- ソケットプログラミングにおけるクライアントとサーバー
- Python ソケットでクライアントサーバー通信を使用して文字列を送信する
この記事では、ソケット、ソケットに組み込まれているメソッド、サーバーとクライアント、および Python でソケットとの通信を成功させる方法について説明します。ソケットは、データを送受信するためのサーバー側とクライアント側の間のブリッジの役割を果たします。
Python コードでは、ソケットを作成し、ソケットを使用して文字列を渡し、クライアントとサーバー間の接続を確立します。
Python のソケット
ソケットは、データを送受信するために構築されたエンドポイントとして定義されます。1つのネットワークには 2つのソケットがあります。IP アドレスとポートの組み合わせはソケットに存在します。
1つのデバイスには、ポート番号に基づいて n 個のソケットがあります。さまざまなプロトコルでさまざまなタイプのポートを使用できます。
以下のいくつかの標準ポート番号とそのプロトコルがあります。
プロトコル | 説明 |
---|---|
HTTP |
そのポート番号は 80 で、Python ライブラリは httplib 、urllib 、および xmlrpclib です。HTTP ポートは Web ページに使用されます。 |
FTP |
そのポート番号は 20 で、Python ライブラリは ftplib と urllib です。このポートはファイル転送に使用されます。 |
NNTP |
そのポート番号は 119 で、Python ライブラリは nntplib です。このポートは、未送信のニュースに使用されます。 |
SMTP |
そのポート番号は 25 で、Python ライブラリは smtplib です。このポートは、電子メールの送信に使用されます。 |
TELNET |
そのポート番号は 23 で、Python ライブラリは telnetlib です。このポートはコマンドラインに使用されます。 |
Pop3 |
そのポート番号は 110 で、Python ライブラリは poplib です。このポートは、電子メールのフェッチに使用されます。 |
Gopher |
そのポート番号は 70 で、Python ライブラリは gopherlib です。このポートは、ドキュメントの転送に使用されます。 |
Python でソケットを実現するための組み込みメソッド
Python でソケットを実現するには、Socket
モジュールまたはフレームワークをインポートする必要があります。これらのモジュールはすべて組み込みのメソッドで構成されており、ソケットの作成に役立ち、相互に関連付けるのにも役立ちます。
以下は、ソケット用のいくつかの堅牢な組み込みメソッドです。
Socket.socket()
メソッドはソケットを作成します。クライアント側とサーバー側のように、両方の側で必要です。Socket.accept()
は接続を受け入れるために使用されます。Socket.accept()
メソッドは、(conn、address)のような値のペアを返します。Socket.bind()
は、パラメーターとして指定されたアドレスをバインドするために使用されます。Socket.close()
は、ソケットが閉じていることを表します。Socket.connect()
は、パラメータとして指定されたアドレスを接続するために使用されます。Socket.listen()
は、サーバーまたはクライアントでコマンドをリッスンするために使用されます。
ソケットプログラミングにおけるクライアントとサーバー
以下では、ソケットプログラミングにおけるクライアントとサーバーの意味を学習します。
クライアント
サーバーから情報またはデータを受信するコンピューターまたはソフトウェアは、クライアントと呼ばれます。クライアントはサーバーにサービスを要求します。Web ブラウザはクライアントの最良の例です。
サーバ
サーバーは、ネットワークリソースを管理するために使用されるプログラム、コンピューター、またはデバイスです。サーバーは、同じデバイス、ローカルコンピューター、またはリモートの場合があります。
Python ソケットでクライアントサーバー通信を使用して文字列を送信する
Python ファイルのソケットから通信するための 2つのファイルを作成します。1つはサーバー側用で、もう 1つはクライアント側用です。そして、接続構築のための 2つのプログラムがあります。
Python ソケットのサーバー側
最初にサーバー側のコードを作成します。組み込みメソッドを使用してサーバー側のコードを作成します。
サーバー側のコードは次のとおりです。
import socket
s = socket.socket(
socket.AF_INET, socket.SOCK_STREAM
) # Socket will create with TCP and IP protocols
# This method will bind the sockets with server and port no
s.bind(("localhost", 9999))
s.listen(1) # Will allow a maximum of one connection to the socket
c, addr = s.accept() # will wait for the client to accept the connection
print("CONNECTION FROM:", str(addr)) # Will display the address of the client
c.send(
b"HELLO, Are you enjoying programming?/Great! Keep going"
) # Will send message to the client after encoding
msg = "Take Care.............."
c.send(msg.encode())
c.close() # Will disconnect from the server
出力:
This connection is from: ('127.0.0.1', 50802)
Python ソケットのクライアント側
クライアントはサーバーにメッセージを送信し、サーバーはそのメッセージに応答します。クライアント側も、コードに組み込まれているメソッドを使用します。
クライアント側では、最初にソケットを作成します。次に、ホストの IP アドレスとポート番号を接続します。
コード:
import socket
s = socket.socket(
socket.AF_INET, socket.SOCK_STREAM
) # Socket will create with TCP and, IP protocols
s.connect(("localhost", 9999)) # Will connect with the server
# Will receive the reply message string from the server at 1024 B
msg = s.recv(1024)
while msg:
print("Received:" + msg.decode())
msg = s.recv(1024) # Will run as long as the message string is empty
s.close() # Will disconnect the client
出力:
The message is Revived: HELLO, Are you enjoying programming? Great! Keep going
The message is Revived: Take Care..............
指定されたコードが実行されると、サーバーとクライアントの間に接続が構築されます。接続後、クライアント画面にメッセージが表示されます。
メッセージは次のようになります。
HELLO, Are you enjoying programming? Great! Keep going
そして、他のメッセージは次のようになります。
Take Care..............
このメッセージはサーバー側から送信されたため、クライアント側に表示されます。このようにして、コードが実行され、Python のソケットを介して文字列を送信する出力が得られます。
Zeeshan is a detail oriented software engineer that helps companies and individuals make their lives and easier with software solutions.
LinkedIn