ソフトウェア開発フレームワーク
ソフトウェア開発フレームワークは、クライアントとサーバーのセットを開発しなければなりません
クライアントとサーバー側の役割
サーバー:サービス提供するために、1日24時間
のクライアントを:あなたはサービスを検索したい場合は、サービスを探し、楽しみます
ソフトウェア開発フレームワークは、二つのタイプに分けられます。
C / Sアーキテクチャ:
クライアント:クライアント
サーバー:サーバー
長所:ソフトウェアの使用は安定しており、ネットワークリソースを節約することができます
短所:ユーザーが同じデバイス上で複数のソフトウェアを使用する場合は、複数のクライアントをダウンロードする必要があります
2.各ソフトウェアの更新は、クライアントにもダウンロードを更新する必要があります
ソフトウェアのC / Sの構造:
たとえば:QQ、Pycharmは、コンピュータ上のように...モバイル端末(携帯端末)は、王を微信
B / Sの構造:
ブラウザ:ブラウザ(クライアント)
サーバー:サーバー
長所:、、複数のソフトウェアをダウンロードするようにユーザーに要求することなく、クライアントのブラウザとしてブラウザに直接アクセスするために使用するソフトウェアをソフトウェアのユーザーの更新バージョンをダウンロードする必要が行動しないために
短所:ネットワークが不安定な場合、ネットワークリソースの過剰消費、ソフトウェアの使用が不安定になります
ソフトウェアのB / Sの構造:
たとえば:ドメインは、ブラウザ(クライアント)でのソフトウェアの一部に名前を入力します(http://xxxxxx.com/)
ネットワークプログラミング
- ネットワークプログラミングの開発の歴史
すべてのカウントは、リモート、それゆえ「ネットワークプログラミング」を介してデータを取得することを期待して、高度な軍事由来しています
どのように初期のリモート通信: - コール--->電話回線
- フラットスクリーンのコンピュータ - >イーサネットケーブル、有線LAN
- ノートPC - >無線LAN
リモート通信を実現するために持っている必要があります。
1.物理リンクメディア--->カード....
2.インターネットプロトコル
- メディアの対人コミュニケーション:中国語、英語
- コンピュータのメディア間の通信:「インターネット・プロトコル」
インターネットプロトコル
また、7層のネットワークプロトコルとして知られているインターネット・プロトコル、OSI 7層のプロトコルは、OSIは、世界標準団体であります
OSI 7層のプロトコル:
- アプリケーション層
- プレゼンテーション層
- セッション層
- トランスポート層
- ネットワーク層
- データリンク層
- 物理的な接続層
下から先頭に学びます:
優先順位は5つの契約の合計を知る必要があります
- 物理的な接続層
バイナリデータ0101010111を送信した電気信号に基づいて
010:あなたあなた
101:I I
- データリンク層
データリンク層「イーサネット・プロトコル」、バイナリ送信される電気信号に基づいて、特殊なユーザ・データ処理
イーサネットプロトコル:
電気の良いグループの1規定
2.ネットワークケーブルに接続された各コンピュータには、「カード」にしなければなりません
- 異なるメーカーのネットワークカード
- 各カードには、独特の世界ナンバー12を持っています
- 6前:ベンダー号
- 6後:シリアル番号
- スイッチ:複数のコンピュータを相互に接続することができます
データを送信するために、イーサネットベースのプロトコル:
特長:ラジオ、薄いです -
短所:ブロードキャストストームは、ローカルエリアネットワークを介して通信することはできません
- インターネット:ローカルエリアネットワーク間の通信を可能に
ネットワーク層
IPアドレス:コンピュータを一意に識別するアドレス(ローカルエリアネットワーク)。
IP:ドット十進
最小:0.0.0.0
最大:255.255.255.255
IPV4は(知っている):少数の人々がコンピュータを使用し始めたので、そこIPV4プロトコルバージョン
IPV6(理解して):
ネイティブIP:ループバックアドレス、127.0.0.1 - >ローカルホスト
トランスポート層
TCP / UDPプロトコル、それらはポート作業に基づいています
- ポート番号は:特定のコンピュータ・ソフトウェアを特定します
- ポート番号の範囲:0〜65535
注意:1.オペレーティング・システム、ポート0から1024は、一般的にデフォルトで使用されている(移動しません)
2.後のインターフェイス番号は80008001を使用してみてください
ソフトウェアの開発に使用されるデフォルトのポート番号:
mysqlの:3306
mongdb:27017
ジャンゴ:8000
Tomcatの:8080
フラスコ:5000
Redisの:6379
あなたは、サーバーがクライアントと通信したい場合、それは双方向チャネルで、その結果、リンクを確立する必要があります
クライアントがサーバーにメッセージを送信します
もう一つは、メッセージを送信するために、クライアントにサーバです
アプリケーション層
HTTP
FTP
要約:IP:一意にコンピュータを識別するために使用される場所
ポート:コンピュータ上のソフトウェアアプリケーションのためのポートを確認します
IP +ポート:コンピュータの世界でのソフトウェア・アプリケーション
TCPプロトコルの動作
- 4を振っスリーウェイハンドシェイク、
- スリーウェイハンドシェイクは、接続を構築します:
良いリンクを確立するために、双方向チャネルを確立
聞く:聞きます
設立:接続を確立するための確認要求
- データを送信します
書きます
読みます
クライアントがサーバにデータを送信し、メモリに格納されたデータは、サーバが受信を確認する必要があり、データがメモリに解放されます
サーバが確認領収書を返すようにそれ以外の場合は、時間から時間に一回送信されます
時間をかけて、無段階場合や領収書の確認応答を返さない、送信をキャンセルし、データメモリを解放しています
- フォーショートリンクを振っ:
TIME_WITE:待機する時間
Scoket
ソケットモジュールは、C / Sアーキテクチャソケットを書き込むことができます。
ソケットソケットプロトコル層は、仕事の良いパッケージになります
メリット:あなたは、開発コストを節約することができます
使用法:インポートソケット
# 服务端
import socket
server = socket.socket()
server.bind(
('127.0.0.1', 9527)
)
server.listen(1)
while True:
conn, addr = server.accept()
while True:
print(addr)
try:
data = conn.recv(10).decode('utf8')
print(data)
if data == 'q':
break
conn.send(data.encode(('utf8')))
except Exception as e:
print(e)
break
conn.close()
# 客户端
import socket
client = socket.socket()
client.connect(
('127.0.0.1', 8888)
)
while True:
send_msg = input('client---》server:')
client.send(send_msg.encode('utf-8'))
if send_msg == 'q':
break
data = client.recv(1024).decode('utf-8')
print(data)
client.close()
注意:クライアントとサーバーが従わなければなりません。
送信の一端、RECVの他端
異なる端部を同時に送信またはRECV