PythonのSocketソケット
2662 ワード
Socketの紹介
定義:TCPはホストのIPアドレスにホストのポート番号を加えてTCP接続の端点とし、この端点をソケットまたはソケットと呼ぶ.
接続使用プロトコル(TCP/UDP)、ローカルホストのIPアドレス、ローカルプロセスのプロトコルポート、リモートホストのIPアドレス、リモートプロセスのプロトコルポートを含む.
役割:通信プロセスを実現するために確立された通信パイプは、クライアントとサーバ側の通信プロセスを真実に表し、双方のプロセスはsocketを通じて通信し、通信のルールは指定されたプロトコルを採用する.Socketを通じて、TCP/IPプロトコルを使用することができます.
アプリケーション層がトランスポート層を介してデータ通信を行う場合、TCPは同時に複数のアプリケーションプロセスに同時サービスを提供するという問題に直面する.複数のTCP接続または複数のアプリケーションプロセスは、同じTCPプロトコルポートを介してデータを転送する必要がある場合があります.異なるアプリケーションプロセスと接続を区別するために、多くのコンピュータオペレーティングシステムは、アプリケーションとTCP/IPプロトコルとのインタラクションにソケットインタフェースを提供している.アプリケーション層と転送層はSocketインタフェースを通じて、異なるアプリケーションプロセスまたはネットワーク接続からの通信を区別し、データ転送の同時サービスを実現することができる.
PythonがTCPソケットを実現
サービス・エンドを実行してからクライアントを実行
PythonがUDPソケットを実現
UDPの性質を利用して、簡単なチャット機能を実現することができ、ネットワークのないローカルエリアネットワークに適用することができる.サービス側とクライアント側のHOSTと送信方式は自分で改造できる.
定義:TCPはホストのIPアドレスにホストのポート番号を加えてTCP接続の端点とし、この端点をソケットまたはソケットと呼ぶ.
接続使用プロトコル(TCP/UDP)、ローカルホストのIPアドレス、ローカルプロセスのプロトコルポート、リモートホストのIPアドレス、リモートプロセスのプロトコルポートを含む.
役割:通信プロセスを実現するために確立された通信パイプは、クライアントとサーバ側の通信プロセスを真実に表し、双方のプロセスはsocketを通じて通信し、通信のルールは指定されたプロトコルを採用する.Socketを通じて、TCP/IPプロトコルを使用することができます.
アプリケーション層がトランスポート層を介してデータ通信を行う場合、TCPは同時に複数のアプリケーションプロセスに同時サービスを提供するという問題に直面する.複数のTCP接続または複数のアプリケーションプロセスは、同じTCPプロトコルポートを介してデータを転送する必要がある場合があります.異なるアプリケーションプロセスと接続を区別するために、多くのコンピュータオペレーティングシステムは、アプリケーションとTCP/IPプロトコルとのインタラクションにソケットインタフェースを提供している.アプリケーション層と転送層はSocketインタフェースを通じて、異なるアプリケーションプロセスまたはネットワーク接続からの通信を区別し、データ転送の同時サービスを実現することができる.
PythonがTCPソケットを実現
#
import socket
# socket
serverTcp = socket.socket(socket.AF_INET,socket.SOCK_STREAM)
#
HOST = ''
POST = 6666
#
serverTcp.bind((HOST,POST))
#
serverTcp.listen(5)
while True:
#
client,add = serverTcp.accept()
print(" ------")
#
data = client.recv(1024)
print(" :" + data.decode('utf-8'))
#
client.send('This is serverTcp'.encode('utf-8'))
#
client.close()
#
import socket
# client
clientTcp = socket.socket(socket.AF_INET,socket.SOCK_STREAM)
#
HOST = socket.gethostname()
POST = 6666
#
clientTcp.connect((HOST,POST))
while True:
#
data = input(" :")
#
clientTcp.send(data.encode('utf-8'))
#
info = clientTcp.recv(1024)
print(" :"+info.decode('utf-8'))
clientTcp.close()
サービス・エンドを実行してからクライアントを実行
PythonがUDPソケットを実現
#
import socket
# socket
serverUdp = socket.socket(socket.AF_INET,socket.SOCK_DGRAM)
#
HOST = ''
POST = 9999
#
serverUdp.bind((HOST,POST))
while True:
#
data,add = serverUdp.recvfrom(1024)
print(" :"+data.decode('utf-8'))
#
serverUdp.sendto("This is Server".encode('utf-8'),add)
#
import socket
# socket
clientUdp = socket.socket(socket.AF_INET,socket.SOCK_DGRAM)
#
HOST = socket.gethostname()
POST = 9999
#
clientUdp.connect((HOST,POST))
while True:
#
data = input(" :")
#
clientUdp.sendall(data.encode('utf-8'))
#
info = clientUdp.recv(1024)
print(" :"+info.decode('utf-8'))
UDPの性質を利用して、簡単なチャット機能を実現することができ、ネットワークのないローカルエリアネットワークに適用することができる.サービス側とクライアント側のHOSTと送信方式は自分で改造できる.