1. 程式人生 > >day34 Pyhton 網路程式設計

day34 Pyhton 網路程式設計

一今日內容

# 函式
# 面向物件
# 進階
    # 網路程式設計 4
    # 併發程式設計 6-7
# 概念
# 網路基礎
    # 區域網的概念
    # 交換機和路由器的工作流程
    # ip地址
    # mac地址
    # 子網掩碼
    # 閘道器ip
    # osi網路7層模型
        # arp協議
        # tcp協議/udp協議
# 介紹socket
# 最基本的socket通訊
# 兩臺機器之間的通訊 : 網路
# 網路開發的架構 :
    # C/S
        # client
        # server
# 例子 : 百度\愛奇藝app\淘寶app\天貓\京東\迅雷\qq\微信 # B/S # browser 瀏覽器(chrom,火狐,360,sogou,IE) # server # 所有的B/S架構也是C/S架構的 # B/S架構更好 # 瀏覽器解放了你電腦上的圖示 # web程式設計 都是B/S架構的 # 兩臺機器之間的通訊 # 網絡卡 - mac地址 - 實體地址 # 如果是多臺機器之間通訊? # 交換機 # 11010198808082288(人) -- mac地址(機器) # 不能用一個mac地址來找尋全中國的機器 #
每臺機器在網路中除了有一個mac地址生效 # 還有一個ip地址,虛擬地址,是一個隨著時間/空間變化而改變的 # ipv4 0.0.0.0 - 255.255.255.255 # ipv6 0.0.0.0.0.0 - 255.255.255.255.255.255 # 127.0.0.1 # 0.0.0.0 # 交換機的工作方式 # 單播\廣播\組播 # arp協議 : 通過ip找mac # 交換機-->廣播 將要找的機器的資訊發給區域網內的所有機器 # 交換機-->單播 返回要找機器的那臺機器 # 公網ip : 無論你在哪兒都可以使用的ip # 0.0.0.0 - 255.255.255.255 全球的所有ip地址的集合
# 152.168.0.1 - 對應著一個固定的服務 # 內網ip : 校園網 公司的員工網 # 保留欄位 專門給內網使用的,公網ip永遠不會佔用內網ip的地址 # 192.168.0.1 - 192.168.255.255 # 172.168.0.1 - 172.168.255.255 # 10.0.0.1 - 10.255.255.255
# ip協議 :
    # ipv4 : 4位點分十進位制
    # ipv6 : 6位:分十六進位制
# arp協議 : 通過ip找mac
# 交換機的工作機制 :只認識mac地址,廣播\單播\組播
# 路由器的工作機制 :路由表,認識ip地址
# 什麼是閘道器ip
# 什麼是子網掩碼
# 自己的ip地址

# 兩臺機器聯絡在一起了
# 很多和網路相關的應用 : 發給我的qq\微信\飛秋
# 埠 0-65535 # 通過某一個埠定位到機器上的某一個應用
# 每一臺機器有很多個埠 0-65535
# 8000以後
# 3306 mysql資料庫
# 8080 埠
# 22   埠 作業系統ssh命令

# 傳遞資訊的方式
    # TCP協議  打電話 : 可靠的\面向連線的\慢
    # UDP協議  發簡訊 : 不可靠的\無連線的\快

# 計算機 :  五層
# 應用層 :
# socket :承包了下面四層複雜的資料包的封裝
# 傳輸層 : tcp/udp 埠     四層路由器  四層交換機
# 網路層 : ip地址           三層路由器  三層交換機
# 資料鏈路層 : mac arp協議  二層交換機  網絡卡
# 物理層

# 二層交換機 :
# 資料鏈路層
# 物理層

# 三層路由器 :
# 網路層
# 資料鏈路層
# 物理層

sever

import socket
sk=socket.socket()
sk.bind(('192.168.11.225',11000))
sk.listen()

conn,addr = sk.accept()
conn.send(''.encode('utf-8'))
print('--->',addr)
msg = conn.recv(1024)
print(msg.decode('utf-8'))
conn.close()
sk.close()

client

import socket

sk =socket.socket()
sk.connect(('192.168.11.225',11000))

msg = sk.recv(1024)
print(msg.decode('utf-8'))
sk.send('你好'.encode('utf-8'))
sk.close()