今日の内容:
ネットワークプログラミング:
ソフトウェア開発構造
1は、C / Sアーキテクチャ
S:サーバーサーバー
C:クライアントクライアント
クライアント:クライアントのアプリケーションを意味したときに自分の好きなサービスを楽しむために行くためのサービスを必要としている
サーバーを:つまり、24時間他のサービスの終了を待つか、サービス提供
2を、B / Sのアーキテクチャ
S:サーバーserver
B:ブラウザブラウザだけでなく、クライアントが、クライアントは、任意のアプリケーションをインストールする必要はありません
だけで、ブラウザでサーバー側の関連するHTTPリクエストによるリソース(Webリソース)、
クライアントのブラウザのブラウザはCRUDすることができます。
マイクロチャネルアリペイは、同じことをやっている:psの同じインターフェイスを
ネットワークプログラミングの目的を学ぶために、都市はあなたがソフトウェアアーキテクチャを開発することができるということです
より良いコミュニケーションと複数のコンピュータへの順序でコンピュータ間でデータのやり取りをリンクするために、
それが公共を持っている必要があります相手があなたがデータを送ったり、データを操作するために複数のコンピュータを読むことを理解させるために、標準的なプロトコルは、
現時点ではそれだけの一つである共通の標準的なプロトコル、すなわちOSIプロトコル、持っていることが必要である
OSIプロトコルを
アプリケーション層は、
層表す
セッション層
、トランスポート層、
ネットワーク層、
データリンク層、
物理接続層を
図1に示すように、物理的な接続層:ケーブル、イーサネット(登録商標)、光ファイバーケーブル....
電気信号の送信レベルで、パイルのすなわち、バイナリデータ0110
2、データリンク層:
1、グループ所定の電気信号
2を、任意の所定のコンピュータが有していますカードは、このカードは、世界で一意の番号が刻まれている
ベンダー番号6は、パイプライン数の後に前者6〜12桁の16進数によってMACアドレス
上記二点総称して「イーサネットプロトコル」として:PS
スイッチ:ありイーサネットベースの通信プロトコル、LANを介して通信することができない
インターネット:Nから互いに接続されているローカルエリアネットワークの複数
3を、ネットワーク層の
IPプロトコルは、
インターネットIPアドレス持たなければならない限り、コンピュータへのアクセスを提供する
IPアドレス特性:点在します小数
のIPアドレス最小値:0.0.0.0
IPアドレスの最大値:255.255.255.255
のIPアドレスは、現在2つのバージョンが利用可能である:(IPV6バージョン起動ように、既存のコンピュータの原因IPV4不十分表現)IPV4 IPV6
IPアドレスが動的に割り当てられる
4、トランスポート層の
TCP \ UDPベースのプロトコルポートが動作している
ポート(ポート)は
、実際のコンピュータとコンピュータの間でコンピュータのアプリケーションとアプリケーションであります 通信
ポート:一意のコンピュータ上のアプリケーションを識別するために使用
ポート番号の範囲:0〜65535
注:0〜1024です。これらは、オペレーティングシステムのデフォルトのポート番号を使用している
8000の後にポートを使用してください:勧告
3306:MySQLのデフォルトポート
Redisのデフォルトのポート:6379
Djangoのデフォルトのポート:8000
フラスコデフォルトのポート:5000
ポート番号が動的に割り当てられた
8989 QQが割り当てられているので、初めての
QQがシャットダウンポート番号が再び開始することになり
TCPプロトコル:また、ストリーミングプロトコル、または信頼できるプロトコルとして知られている
双方向チャネルを確立するために必要なTCPプロトコルの通信に基づいて
3回4回の振って握手
クライアントは、その前に、クライアントがリスニング状態にあった、これは最初のハンドシェイクで、サーバに要求を送信し
、サーバーが最初に対応する情報と一緒に場所を取るために、クライアントに対応するための要求、およびクライアントを受信した後第二のハンドシェイク
クライアントがデータメッセージを受信すると、サーバは、サーバが確認メッセージ、第三のハンドシェイクの成功を受信する必要があることを、成功を受け取るために与えるためにメッセージを送信する必要があります!リンクを確立します
四手を振って、壊れたリンク
クライアント(またはサーバ)は、サーバ最初の波に要求を送信します
サーバーがクライアントに要求を受信した後、要求の受信の確認応答を送信し、第二波
クライアントは、データの完全な不在を受信することができるので、サーバが完全にされていないデータは、クライアント、サーバーに送信され、クライアントプロセスに送信他のデータは、第三の波を終了します
次に、クライアントは受信ブレークオフのサービス側では、サーバが確認メッセージで、サーバに送信されるメッセージでニュースリンクをリンク、リンク、第四の波を切断
メッセージを送信するために、サーバー用のクライアントが待機を受信し、時間の終わりまで、いくつかの時間のために再度データを送信しません一定時間内に受信された場合でも、バッククライアントを決定したりハングアップする、となります
関連データがオフにクリア。
PS:IPアドレス:それは一意にインターネットアクセスを識別するコンピュータである
ポートのポート:1を一意のコンピュータのアプリケーションを識別するために使用される
IP +ポートを一意コンピュータ上でインターネットを特定のアプリケーション
、アプリケーション層:契約HTTPプロトコルFTPプロトコル
の知識ポイントを追加するために:
時間タイプは文句を言いますJSON文字列に直接変換することはできません、手動で自身がオンにする必要があります
JSONをインポート
インポート日時日時、DATEから
#print(datetime.today())年、月、日、時間
#印刷(date.today())日付
#isinstanceオブジェクトがクラスのインスタンスであるかどうかを判断
#issubclassクラスは、特定のクラスのサブクラスであるかどうかを判断しますクラスまたは下位クラスの
クラスMyJson(json.JSONEncoder):
DEFデフォルト(セルフ、O)
でisinstance(O、日時)IF:
o.strftimeを返す( '%% Y-X-M-%D%')が
(でisinstanceをELIF O 、DATE):
o.strftimeを返す( 'M - %%% Y-D')
他:
スーパーを返す()デフォルト(自己、O)。
#印刷(date.today())日付
#isinstanceオブジェクトがクラスのインスタンスであるかどうかを判断
#issubclassクラスは、特定のクラスのサブクラスであるかどうかを判断しますクラスまたは下位クラスの
クラスMyJson(json.JSONEncoder):
DEFデフォルト(セルフ、O)
でisinstance(O、日時)IF:
o.strftimeを返す( '%% Y-X-M-%D%')が
(でisinstanceをELIF O 、DATE):
o.strftimeを返す( 'M - %%% Y-D')
他:
スーパーを返す()デフォルト(自己、O)。
#コールスーパー()、親クラスがデフォルト()このメソッドを持っている
ため、自分の定義に、しかし、その最初の自分の財産法検索
親クラスのデフォルト()メソッドインターセプションである
ことにより、自分自身を見つけるために、優先順位を証明しますプロパティ、構築された、親クラスを見つけるために行く、
RES = { 'C1':datetime.today()、 'C2':date.today()}
プリント(json.dumps(RES、CLS = MyJson))
ため、自分の定義に、しかし、その最初の自分の財産法検索
親クラスのデフォルト()メソッドインターセプションである
ことにより、自分自身を見つけるために、優先順位を証明しますプロパティ、構築された、親クラスを見つけるために行く、
RES = { 'C1':datetime.today()、 'C2':date.today()}
プリント(json.dumps(RES、CLS = MyJson))