元宇聰
(泉州師范學院軟件學院)
C++是在C 語言的基礎上開發的一種通用編程語言,應用廣泛。C++支持多種編程范式,如面向對象編程、泛型編程、面向過程編程、函數式編程等。最新正式標準C++14 于2014 年8 月18 日公布。正式名稱為ISO/IEC 14882:2014。其編程領域眾廣,常用于系統開發、引擎開發等應用領域,是迄今為止最受人們受用的最強大編程語言之一。
標準模板庫(Standard Template Library)是惠普實驗室開發的一系列軟件的統稱,是類庫和函數的集合。現在是C++的一部分,由C++標準委員會制定,并不斷維護更新。
視窗操作系統應用程序接口(Windows Application Programming Interface)是微軟對于視窗操作系統中可用的核心應用程序編程接口的名稱。它被設計為各種語言的程序調用,也是應用軟件與視窗系統最直接的交互方式。
視窗套接字(Windows Socket)是網絡通信的基本構件,是視窗操作系統下得到廣泛應用、開放、支持多種協議的網絡編程接口。20 世紀90 年代初,微軟和第三方廠商共同制訂了一套標準,即視窗套接字規范,簡稱WinSock。一個套接字就是一個通信標識,由一個短整數表示,實際上就是一個句柄,代表網絡協議中的一組數據,該數據包含了通信雙方的因特網協議地址和當前的連接狀態等信息。
視窗套接字使用客戶端/服務器模型。一個服務程序通常在一個眾所周知的地址監聽對服務的請求,此時服務進程一直處于休眠狀態,直到一個客戶對這個服務的地址提出了連接請求。在這個時刻,服務程序被“驚醒”并且為客戶提供服務——對客戶的請求做出適當的反應。
這是一個控制臺程序,用一個循環讓用戶輸入內容,程序對用戶輸入的內容進行判斷,之后繼續循環。
程序把“/”開頭的字符串都當作命令,然后對命令進行分析,根據不同的命令實現對程序的控制。有些命令包含多個參數,參數寫在命令后面,用空格隔開。如果用戶輸入不存在的命令則提示錯誤。
程序把非“/”開頭的字符串都當作聊天內容,在建立連接之后會把輸入內容發送給對方。
(1)服務器偵聽。用戶輸入“/偵聽”命令,參數1 為偵聽的端口號,執行之后程序開始偵聽。偵聽時會阻塞主線程的執行然后等待客戶端的連接,一旦收到客戶端的連接請求,才繼續運行并建立連接。
(2)客戶端連接。用戶輸入“/連接”命令,參數1 為服務器的地址,參數2 為服務器偵聽的端口號,命令檢查無誤并執行之后,開始嘗試與服務器連接。連接時會阻塞主線程的執行然后等待服務器的回應。當客戶端收到服務器的回應時,建立連接。
(3)斷開連接。建立連接后,任意一端都可以隨時斷開連接。其中一端斷開連接時,另一端在接收數據時會偵測到并斷開連接。
建立連接后,服務器和客戶端同時是發送者和接收者,發送者向接收者發送文本,接收者收到內容后在屏幕上顯示文本。
發送過程在主線程,接收過程在接收線程。發送和接收可以同時進行,互不干擾。