Python 網路資料傳輸協議 TCP 程式設計

R-B發表於2021-09-09

什麼是 協議 ?

協議:英文名稱 protocal,是多方協商計議之後得出的 約定、規則、規範

常見網路傳輸協議:

HTTP: hyper text transfer protocal
HTTPS:hyper text transfer protocal secure
FTP: file transfer protocal
HTTP         超文字傳輸協議
HTTPS        提供安全通道的超文字傳輸協議
FTP         檔案傳輸協議
TELNET        虛擬終端協議
SSH         安全外殼協議
POP3         郵局協議(版本 3)
SMTP         簡單郵件傳輸協議
IP         資料包交換協議
TCP         端對端傳輸協議
UDP             資料廣播協議
DNS            域名解析協議,可以透過 nslookup 檢視域名解析資訊
DHCP           動態主機配置協議

國際標準化組織根據使用者從操作應用程式資料經過物理線路的傳輸通訊,

將網路資料傳輸劃分成了層模型

應用層 —> 表示層 —> 會話層 —> 傳輸層 —> 網路層 —> 資料鏈路層 —> 物理層


PYTHON 傳輸層網路程式設計

socket 是一種計算機網路資料結構,中文譯名:套接字



TCP服務端開發

import socket

# 1、定義服務端主機資訊[ip, port]
print("初始化伺服器 》》》》")
HOST = ''
PORT = 8765
ADDRESS = (HOST, PORT)
BUFFER = 1024

# 2、建立可操作的TCP協議的socket物件
print("初始化伺服器主機套接字物件 》》》》")
tcp_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)

# 3、將socket物件和服務端主機繫結
print("繫結伺服器主機 》》》》")
tcp_socket.bind(ADDRESS)

# 4、開始監聽
print("啟動伺服器 》》》》")
tcp_socket.listen(125)

# 5、等待客戶端連線
while True:
    print("等待客戶端連線 =======")
    client_socket, client_addr = tcp_socket.accept()
    print("客戶端{}連線成功".format(client_addr))

# 6、收發訊息
    while True:
        msg = client_socket.recv(BUFFER)
        try:
            print("client客戶端1:{}".format(msg.decode("utf-8")))
        except:
            print("client客戶端2:{}".format(msg.decode("gbk")))
        # print(msg)
        if msg == b'bye':
            print("客戶端退出")
            client_socket.close()
            break

# 7、關閉【服務端一般情況下不要求關閉】
tcp_socket.close()


TCP客戶端開發

import socket

# 定義要連線的伺服器資訊
print("定位伺服器資訊...")
HOST = "192.168.11.195"
PORT = 8888
ADDRESS = (HOST, PORT)
BUFFER = 1024

# 建立 TCP 客戶端套接字物件
tcp_client = socket.socket(socket.AF_INET, socket.SOCK_STREAM)

# 連線指定伺服器
tcp_client.connect(ADDRESS)

# 和伺服器進行資料互動
while True:

    # 接收伺服器的資訊
    info = tcp_client.recv(BUFFER)
    print("server:", info.decode("utf-8"))

    # 給伺服器傳送訊息
    msg = input("enter message:")
    tcp_client.send(msg.encode("utf-8"))

    if msg.lower() == 'bye':
        tcp_client.close()
        print("客戶端退出...")
        break











來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/4560/viewspace-2814991/,如需轉載,請註明出處,否則將追究法律責任。

相關文章