1. 程式人生 > >異常處理與網絡基礎中的tcp,udp協議

異常處理與網絡基礎中的tcp,udp協議

server 數據 ati exc mac地址 成功 soc 不可靠 處理

# 異常處理:
# 什麽是異常?異常和錯誤的區別
    # Error  語法錯誤   比較明顯的錯誤 在編譯代碼階段就能檢測出來
    # Iteration 異常  在執行代碼的過程中引發的異常
# 異常發生之後的效果
    # 一旦在程序中發生異常,程序就不再繼續執行了
# try:
#     # name
#     [][3]
# except NameError:
#     print("請設置好變量!!")
# except IndexError:  #分支異常處理
#     print(‘請認真!!‘)
# # except Exception as e:#萬能異常,常常放在分支異常後面
# #     print(e,type(e))
# else:
#     print(666)#只有不出現錯誤才會執行,若執行成功except,不執行else
# finally:
#     print(777)#不管出沒出現錯誤,finally都會執行

# 自定義異常
# raise NameError(‘這是一個name error的異常‘)
# class EvaException(Exception):
#     def __init__(self,msg):
#         self.msg = msg
#
# raise EvaException(‘這是一個什麽什麽錯誤,有什麽問題‘)

# 使用異常處理的註意事項
# 斷言 assert raise 主動拋異常
# 異常處理(一般少用異常處理)
    # try/except
    # try/except/else
    # try/except/else/finally
    # try/except/finally
    # try/finally

# collections模塊
# 數據類型的擴展模塊
# import queue
# q = queue.Queue()
# print(q.qsize())
# q.put(1)
# q.put(‘a‘)
# q.put((1,2,3))
# q.put(({‘k‘:‘v‘}))
# print(q.qsize())
# print(‘q : ‘,q)
# print(‘get : ‘,q.get())
# print(q.qsize())

# deque 雙端隊列
# from collections import deque
# dq = deque()
# dq.append(2)
# dq.append(5)
# dq.appendleft(‘a‘)
# dq.appendleft(‘b‘)
# print(dq)
# # print(dq.pop())
# # print(dq)
# # print(dq.popleft())
# # print(dq)
# print(dq.remove(‘a‘))
# print(dq.insert(2,‘123‘))
# print(dq)


# 網絡基礎:
# (1)架構:C/S架構,client客戶端和server服務器端,優勢在於充分發揮pc機的性能;
# B/S架構,browers瀏覽器和server服務器端,統一了應用的接口
# 1  mac地址 : 是一個物理地址,全球唯一,  類似於身份證
# 2  ip地址:    是一個四位點分十進制,它標識了計算機在網絡中的位置.類似於 學號
# 3  交換機的通信方式:
#          廣播 : 吼一嗓子
#          單播 : 一對一
#          組播 : 一對多
#  4  arp協議 :  通過目標ip地址獲取目標mac地址的一個協議.
#  5  端口 : 操作系統為本機上每一個運行的程序都隨機分配一個端口,其他電腦上的程序可以通過端口獲取到這個程序
#       ip地址 + 端口 能唯一找到某臺電腦上的某一個服務程序
#  6  路由器 : 連接不同網段 , 路由
#  7  網關   : 類似於一個局域網的出口和入口
#  8  網段   : 一個局域網內的ip地址範圍
#  9  子網掩碼 : 子網掩碼 &  ip地址  得到網段
#  10  osi 五層模型:
        # 應用層       :  http,https,ftp
        # 傳輸層       :  tcp / udp          四層交換機  四層路由器
        # 網絡層       :  ip協議            路由器  三層交換機
        # 數據鏈路層   :  arp協議           以太網交換機  網卡  網橋
        # 物理層       :  傳輸電信號        集線器  網線   光纖
# (2).socket模塊
# 這是一個新的模塊
# import socket
#
# socket
# 又叫做套接字
# 有很多種類型, 但是咱們只需要知道兩種就可以了
# sk = socket.socket(family=AF_INET, type=SOCK_STREAM)
# family:
# 一種: AF_UNIX基於文件類型的套接字(早期socket是源自於unix系統而研發的一個功能, 主要是為了同一臺電腦上, 多個程序直接通信)
# unix系統的中心思想是: 一切皆文件
# 一種: AF_INET基於網絡類型的套接字
# type:
# 一種是基於TCP協議
# SOCK_STREAM
# 一種是基於UDP協議
# SOCK_DGRAM
# tcp協議: 可靠的, 面向連接的, 面向字節流形式的傳輸方式
# udp協議: 不可靠的, 不面向連接的, 面向數據報的傳輸方式, 但是它快
# 創建服務器文件:
#   server_.py內容如下:
import socket
k1=socket.socket()
k1.bind((‘192.168.12.32‘, 8800))
k1.listen()
cn,ar=k1.accept()
ret=cn.recv(1024).decode(‘utf-8‘)
print(ret)
cn.close()
k1.close()
    #client客戶端文件client_.py:
# v1=socket.socket()
# v1.connect((‘192.168.12.32‘, 8800))
# v1.send(‘你好‘.encode(‘utf-8‘))
# v1.close()

異常處理與網絡基礎中的tcp,udp協議