首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> C語言 >> 關於C語言

C# 網路程式設計:協議與檔案傳輸 (1) — 兩種資料埠架構與 XML 協議設計

     編輯:關於C語言

檔案傳輸:兩種架構選擇

前兩篇傳輸字串,現考慮檔案傳輸。假設客戶端選單輸入 S1~S3 送檔、R1~R3 收檔,有兩種做法:

  1. 雙固定埠(類 FTP):伺服器開兩個持續監聽埠——控制埠(命令)、資料埠(檔案)。資料埠可服務多客戶端多請求。
  2. 單控制埠 + 動態資料埠:伺服器僅開控制埠。收到請求後,客戶端開臨時埠專供該次傳輸,結束即關閉。資料埠僅服務單一請求,故傳輸可用同步;控制埠仍需非同步。

雖方案一較優,但為配合下一篇「聊天程式」(採第三種模式),本文採方案二作鋪墊。

1. 訂立協議:採用 XML 格式

1.1 發送檔案流程與協議

  1. 客戶端開資料埠監聽,取得埠號(假設 8005)。
  2. 輸入 S1 → 發送控制字串:[file=Client01.jpg, mode=send, port=8005]。
  3. 伺服器依客戶端 IP/Port 連回。
  4. 客戶端偵測連線 → 開始送檔。
  5. 傳完雙方關閉連線。

原協議為純字串,上一篇用正則解析,不夠優雅。本文改用 XML:

<protocol><file name="client01.jpg" mode="send" port="8005" /></protocol>

註:發送/接收站在客戶端視角;客戶端送檔對伺服器即為收檔。

1.2 接收檔案流程與協議

流程對稱,差別在資料流寫入方向:

  1. 客戶端開資料埠(假設 8006)。
  2. 輸入 R1 → 發送:<protocol><file name="Server01.jpg" mode="receive" port="8006" /></protocol>。
  3. 伺服器依 IP/Port 連回。
  4. 客戶端建立連線,伺服器寫入資料流。
  5. 傳完雙方關閉。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved