TCPソケットプログラミング ソケットプログラミング TCP-echoのデータ通信手順 Python socket module: Just a thin wrapper over the underlying C library's socket calls. TCPソケットプログラミング TCP通信のモデルとプログラミングための背景知識 ソケットプログラミング TCP-echoのデータ通信手順 TCP-echo動作テスト(Cプログラム・Client/Serverは個別の端末) TCP-echo動作テスト(Cプログラム・Client/Serverは端末を共有) TCP-echo動作テスト(Pythonプログラム・Client/Serverは個別の端末)
ソケットによるデータ通信とTCP/IPネットワーク 通信プログラムを作成する上では、通信相手のソケットに自分のソケットを繋ぐことができれば、安定した通信を行うことができる。 安定した通信は、TCP/IPのプロトコルで自動的に対処される。 ソケットを繋ぐことができれば、 マシン同士が、どの様な通信機器や伝送経路を辿って、データを送受信しているかなどを気にする必要は無くなる。
ソケットプログラミング ソケット アプリケーションがデータを送信するための仕組みを抽象化したオブジェクト データの送受信は、ファイルI/Oとほぼ同じ ストリームソケット TCP使用 データグラムソケット UDP使用 ソケットの共有 複数のアプリケーションが同一のソケットを参照できる AP UDP TCP IP 1 2 65535 ソケット TCP IP
TCP-echoのデータ通信手順 TCPEchoClient TCPEchoServer socket() bind() listen() accept() socket() コネクション設定 connect() データ データ ”Hello” send() recv() TCP IP ”Hello” ”Hello” データ通信を行う データ通信を行う ”Hello” recv() send() コネクション開放 close() close()
TCP-echo動作テスト ( Cプログラム・Client/Serverは個別の端末) データ ”Yahoo” TCPEchoClient TCPEchoServer ”Jazz” ” Jazz” TCP IP $ gcc -o TCPEchoServer TCPEchoServer.c HandleTCPClient.c DieWithError.c $ ./TCPEchoServer 5000 Handling client 150.43.220.22 $ gcc -o TCPEchoClient TCPEchoClient.c DieWithError.c $ ./TCPEchoClient 150.43.220.22 "Yahoo" 5000 Received: Yahoo $ ./TCPEchoClient 150.43.220. 22 "Jazz" 5000 Received: Jazz $
TCP-echo動作テスト ( Cプログラム・Client/Serverは端末を共有) TCPEchoClient TCPEchoServer $ gcc -o TCPEchoServer TCPEchoServer.c HandleTCPClient.c DieWithError.c $ gcc -o TCPEchoClient TCPEchoClient.c DieWithError.c $ ./TCPEchoServer 5000 & [1] 11972 $ ./TCPEchoClient 150.43.220.22 "Yahoo" 5000 Handling client 150.43.220.22 Received: Yahoo $ ./TCPEchoClient 150.43.220. 22 "Jazz" 5000 Received: Jazz $ データ データ ”Yahoo” TCP IP ”Yahoo” ”Yahoo” ”Yahoo” データ データ ”Jazz” TCP IP ” Jazz” ”Jazz” ”Jazz”
TCP-echo動作テスト ( Pythonプログラム・Client/Serverは個別の端末) TCPEchoClient TCPEchoServer prompt $N:$D:$S E:> TCPEchoServer.py TCPEchoServer 50007 Server connected by ('127.0.0.1', 1462) Server received data : Hello network world No data recevied Server connected by ('127.0.0.1', 1463) Hello network world Echo>=Hello network world データ データ prompt $N:$D:$S E:> TCPEchoClient.py TCPEchoClient localhost 50007 Client received data : Echo>=Hello network world E:> データ データ