3月11日,星期一,下午六點。
鵬城大學的校園裡,春日的餘暉如同細膩的金紗,輕柔地灑落在教學樓的外牆上,為這棟建築精心鍍上了一層暖黃的迷人光暈。
新學期伊始,校園中洋溢著蓬勃朝氣,學生們步履匆匆,懷揣著對知識的渴望,奔赴各自的課堂,身影在校園的小徑上交織成一幅充滿活力的畫卷。
此刻,科技樓八四辦公室內格外安靜,隻有秦奕一人敲擊鍵盤的聲音在房間裡回蕩著。
項目組的其他成員因為課程安排,此刻都在各自課堂的教室裡全神貫注地聽講、做筆記,接受知識的洗禮。
其實,秦奕和項目組其他人一樣,在這個時間點有課程安排。
但既然童士柏之前已經爽快地答應他幫忙處理課程平時考勤問題,他便不再糾結,心裡打定主意,這學期就不再去課堂上聽課了。
在他看來,這些基礎課程的知識,自己大多早已爛熟於心。即便存在些許遺漏,一來那些遺漏的部分很可能在實際應用中派不上用場;二來就算是有用的知識,日後在實踐過程中遇到時,到時再進行針對性的查漏補缺也來得及。
他穩穩地坐在電腦前,眼神專注而堅定,雙手在鍵盤上輕快地舞動,全身心地投入到代碼編寫之中。
他正在編寫的代碼內容分為兩大部分,一部分是服務端程序,另一部分是客戶端程序。
從功能設計來講,這兩塊內容並不複雜。
服務端的職責相對單一,隻需監聽特定的端口,一旦捕捉到客戶端的請求,便迅速響應,將請求裡要求的文件內容精準地傳輸回去。
客戶端的功能也十分簡單,它具備向服務端發起文件內容請求的能力,在接收到服務端傳來的數據後,即刻在屏幕上清晰地打印出來。
這兩個在後來使用python語言僅需一行代碼便能輕鬆實現的簡單功能,在當下卻讓秦奕費了不少功夫。
他用c語言敲下了密密麻麻的四五百行代碼,才勉強實現了類似的效果。
因為這個時候,c語言還沒有專門用於網絡處理的標準庫,秦奕隻能基於自己之前編寫的tcpip協議棧庫,一點一點地建立連接,發送請求,接收數據。
不過這兩天在開發服務端和客戶端程序的過程中,他也發現自己編寫的協議棧庫存在一些隱患,便順手進行了修複。
“唉,這些網絡操作還是得封裝起來,現在這樣實在太繁瑣了,功能代碼都被攪得一團糟。”秦奕一邊敲著代碼,一邊暗自想著。
經過一番努力,他終於在本地初步調試好了功能。
秦奕迫不及待地用軟盤將客戶端程序拷到李勇軍的電腦上,準備通過網絡獲取自己電腦裡的文件。
他快速敲擊出一行命令出來,隨著dos命令行上一行漢字緩緩出現,他臉上露出了欣慰的笑容。
成了!
他用客戶端程序通過網絡向服務端獲取了文字信息!
不過事情還遠沒有結束。
秦奕心裡清楚,這隻是邁出了網絡文件傳輸的第一步。
目前僅實現了基本功能,連協議都還不完善,後續還有很多工作要做。
他們現在的網絡一旦有客戶端與服務端通信,所有機器的通信通道就會被占用,其他客戶端便無法連接,所以客戶端在每次請求資源後都需要及時斷開tcp連接,同樣地服務端也要做一係列的超時處理。
再有,即便有tcpip協議的保障,數據在傳輸過程中仍可能出現丟失或錯誤,程序必須確保這些問題不會影響正常流程。
此外,還得限製一次性傳輸的數據量,以免長時間占用通信通道。
……
茫茫多的網絡問題都在秦奕腦海裡一一浮現,他感到有些呼吸不過來了。
不過,第一步還是完成了!
秦奕笑著給自己豎了個大拇指。
“老秦,什麼事情笑得這麼開心啊!”李勇軍的聲音在辦公室門口響起,“咦,你怎麼坐在我的位置上,你在用我的電腦乾什麼?”