10.17要約

ネットワークプログラミング

並行プログラミング

データベース開発

ウェブフロントエンド

1.ソフトウェア開発フレームワーク:

ソフトウェア開発は、私たちは、クライアントとサーバーのセットを開発しなければなりません。

クライアントとサーバーの役割:

サーバー:24時間サービス

クライアント:あなたはサービスを検索したい場合は、サービスを探し、楽しみます

ソフトウェア開発フレームワークは、二つのタイプに分けられます。

C / Sアーキテクチャ:クライアント(クライアント)Severの(サーバー)

長所:ソフトウェアの使用は安定しており、ネットワークリソースを節約することができます。

短所:ユーザーが同じデバイス上で複数のソフトウェアを使用する場合は、複数のクライアントをダウンロードする必要があります。1. 2、すべての更新ソフトウェア、クライアントはアップデートを再ダウンロードするには従わなければなりません。C / Sアーキテクチャソフトウェア:QQ、コンピュータ、マイクロチャネル携帯端末、栄光の王などのようなpycharm。

B / Sのアーキテクチャ:ブラウザ:ブラウザサーバー:サーバー

長所:、複数のソフトウェアをダウンロードするようにユーザーに要求することなく、クライアントのブラウザなどのソフトウェアのユーザー、ブラウザで直接アクセスするのに必要なソフトウェアの更新バージョンをダウンロードする必要が行動しないように。

短所:ネットワークが不安定な場合、ネットワークリソースの過剰消費は、ソフトウェアの使用は安定していません。

ソフトウェアのB / Sの構造:例えば、ブラウザ(のソフトウェアの一部のドメイン名を入力http://oldboyedu.com/)。

学ぶために後半2

ネットワークプログラミング、並行プログラミング、データベース開発は、ソフトウェアアーキテクチャCのS /を開発することができます。(アンチYoukuのシステム)

遠位HTML、CSS、JS、ウェブ・フレーム(ネットワークプログラミング、並行プログラミング)B / Sソフトウェアアーキテクチャを開発することができ(BBSシステム)

3.ネットワークプログラミング

- ネットワークプログラミングの開発の歴史

すべての高度な技術がリモート介してデータを取得することを望んで、軍から導出され、すべてのWebプログラミング "がありました。

どのように初期のリモート通信:

- コール - 「電話回線

- フラットスクリーン・コンピュータ(PC大きなお尻) - 「ケーブル、有線LAN

- ノートPC - 「有線ネットワークカード、無線LANカード

リモート通信を実現するために持っている必要があります。

1.物理的な接続媒体 - 「NIC

2.インターネットプロトコル

- 人と人とのコミュニケーションのメディア:中国語、英語

- コンピュータのメディア間の通信:「インターネット・プロトコル」

4.インターネットプロトコル

また、7層のネットワークプロトコルとして知られているインターネット・プロトコル、OSI 7層のプロトコルは、OSIは、世界標準の組織です。

OSI 7層のプロトコル:

- アプリケーション層

- プレゼンテーション層

- セッション層

- トランスポート層

- ネットワーク層

- データリンク層

- 物理的な接続層

下から先頭に学ぶ:契約の優先順位を5層の合計を理解する必要性を。

物理接続層

バイナリデータを送信した電気信号に基づいて

データリンク層

バイナリデータに基づく電気信号処理用に設計されたデータリンク層「イーサネットプロトコル」、。

イーサネットプロトコル:

1.良好な電気的データをグループ化する条項。

2.コンピュータに接続されたネットワークケーブルの各層は、「カード」を持っている必要があります。

- 異なるメーカーのネットワークカード

- 各カードには固有の番号の世界で「MAC」アドレス12を持つことになります。

- 6前:ベンダー号

- 6後:シリアル番号

スイッチ:複数のコンピュータが相互に接続できます。

データを送信するために、イーサネットベースのプロトコル:

特定:ブロードキャスト、ユニキャスト

短所:ブロードキャストストームは、LANを介して通信することはできません。

インターネット:ローカルエリアネットワークとの間の通信をしてみましょう。

ネットワーク層

IPアドレス:住所1台のコンピュータ(ローカル・エリア・ネットワーク)を識別します。

IP:ドット十進

最小:0.0.0.0

最大:255.255.255.255

IPV4は、少数の人々がコンピュータを使用し始めたので、IPv4プロトコルのバージョンがあります。

IPV6:IP括弧します。

トランスポート層

TCP / UDPプロトコル、それらはポート作業に基づいています

- ポート番号:1つのソフトウェアは、コンピュータを識別します。

- ポート番号の範囲:0〜65535

注意:1つの、オペレーティングシステム、0-1024は、一般的にデフォルトで使用されているポート; 2試みは、8000の後にポート番号を使用するには...

ソフトウェアの開発に使用されるデフォルトのポート番号:

mysqlの:3306

MongoDBの:27017

ジャンゴ:8000

Tomcatの:8080

フラスコ:5000

Redisの:6379

あなたは、サーバーがクライアントと通信したい場合、それは双方向チャネルで、その結果、接続を確立する必要があります。クライアントがサーバーにメッセージを送信します。もう一つは、メッセージを送信するために、クライアントにサーバです。

アプリケーション層:HTTP、FTP

要約:

IP:一意にコンピュータの位置を識別します。

ポート:確認のため、コンピュータ上のソフトウェアアプリケーションのためのポート。

IP +ポート:世界でコンピュータ上のソフトウェアアプリケーション。

これは、β-TCPプロトコルを動作します。

TCPは、ストリーミングプロトコルであります

スリーウェイハンドシェイクは、4回を振っ:

- スリーウェイハンドシェイクは、接続を構築します:

双方向チャネルを確立し、良好な接続を確立します。

-listen:モニター

-established:接続を確立するための確認要求を

- データを送信します。

書きます

読みます

クライアントがサーバにデータを送信し、メモリに格納されたデータは、サーバが受信を確認する必要があり、データがメモリに解放されます。サーバが確認領収書を返すようにそれ以外の場合は、時間から時間に一回送信されます。

確認応答を返さないサーバーが受信した場合の期間にわたって、または、送信をキャンセルします。そして、メモリ内のデータのリリース。

-TIME-WAIT:待つ - 四は、接続をオフに振りました。

5.socket:

ソケットは何ですか:ソケットがモジュールである、あなたはソケットC / Sアーキテクチャを書くことができます。

なぜ使用ソケット:ソケットソケットは、プロトコル層の良い仕事をカプセル化します。利点:あなたは、開発コストを節約することができます。私たちは実装されているメソッドモジュールを呼び出すことによって、2つのプロセス間の接続と通信を確立します。

使用方法:インポートソケットを

注意:クライアントとサーバーが従わなければならない。最後は送信、同時にもう一方の端の異なる端部をrecvを送信したり、RECV。

1.初期ソケットソケット。

#服务端
import socket

#默认指定TCP协议

#买手机
server=socket.socket()

#插卡
server.bind(
    #ip+port
    ('127.0.0.1',9527)
)  #把地址绑定到套接字

#开机,等待接听
server.listen(5)   #listen(5) 半连接池,监听链接。

#监听是否有消息
#conn:相当于服务端往客户端挖的管道
conn,addr=server.accept()  #接收客户端链接
print(addr)

#听客户端给我说话
data=conn.recv(1024).decode('utf8')  #可以接收1024字节数据,接收客户端信息
print(data)

conn.send(b'hello xiao zhu')  #向客户端发送信息

#挂电话
conn.close()    #关闭客户端套接字

#关机
server.close()     #关闭服务器套接字

#关机
server.close()
运行结果:
('127.0.0.1', 54257)
你好,小贱贱
#客户端
import socket

#买手机
client=socket.socket()

#往服务端拨号
#client:相当于客户端往服务端挖的管道
client.connect(('127.0.0.1',9527))  #ip+port:寻找服务端,连接服务器

#客户端向服务端说话

client.send('你好,小贱贱'.encode('utf8'))
data=client.recv(1024)  #对话(发送/接收)
print(data)

#关闭连接
client.close()  #关闭客户端套接字
运行结果:
b'hello xiao zhu'

2.通信ソケットサイクル

#服务端
import socket
server=socket.socket()

server.bind(
    ('127.0.0.1',9528)
)
server.listen(5)

conn,addr=server.accept()
print(addr)
while True:
    #接收客户端发送过来的消息
    data=conn.recv(1024).decode('utf8')  #可以接收1024字节数据
    print(data)

    if data=='q':
        break
    #让服务端输入发送给客户端的消息
    send_msg=input('server-->client: ').encode('utf8')
    conn.send(send_msg)

conn.close()
#客户端
import socket
client=socket.socket()
client.connect(
    ('127.0.0.1',9528)
)

while True:
    send_msg=input('client-->server:')

    #服务端往客户端发送的数据
    client.send(send_msg.encode('utf8'))

    if send_msg=='q':
        break

    #服务端返回的数据
    data=client.recv(1024).decode('utf8')
    print(data)

client.close()

3.サーバー複数のクライアント

#服务端
import socket
server=socket.socket()
server.bind(
    ('127.0.0.1',8888)
)
server.listen(5)  #半连接池,可以“等待5个用户接受服务”

while True:
    #等待客户端连接过来
    conn,addr=server.accept()
    print(addr)

    #循环接收客户端数据
    while True:
        try:
            data=conn.recv(1024).decode('utf8')
            print(data)

            #mac  linux系统bug:b''
            if len(data)==0:
                continue

            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('utf8'))

    if send_msg=='q':
        break

    data=client.recv(1024).decode('utf8')
    print(data)

client.close()

おすすめ

転載: www.cnblogs.com/lidandanaa/p/11694345.html