Unix和Windows跨系統通訊程式設計2

2021-03-31 08:56:59 字數 556 閱讀 5987

四、 跨系統通訊程式設計例項

下面通過乙個例項來具體說明 socket 在unix 和windows 跨系統通訊程式設計中的應用。

在一台計算機上執行服務端程式,同一網路的其他計算機上執行客戶端程式,登入到伺服器上,各個客戶之間就可以聊天了。

1.服務端

服務端用名為 client 的整型陣列記錄每個客戶的已連線套介面描述字,此陣列中的所有元素都初始化為-1。同時伺服器既要處理監聽套介面,又要處理所有已連線套介面,因此需要用到 i/o 復用。通過 select 函式核心等待多個事件中的任乙個發生,並僅在乙個或多個事件發生或經過某指定時間後才喚醒程序。維護乙個讀描述字集 rset ,當有客戶到達時,在陣列 client中的第乙個可用條目(即值為-1的第乙個條目)記錄其已連線套介面的描述字。同時把這個已連線描述字加到讀描述字集rset 中,變數maxi 是當前使用的陣列 client 的最大下標,而變數 maxfd+1 是函式 select第乙個引數的當前值。如下圖:(假設有兩個客戶與伺服器建立連線)

圖3 第二客戶建立連線後的tcp伺服器

圖4 第二客戶建立連線後的資料結構

作業系統 Windows和UNIX系統呼叫示例

系統呼叫型別 windows unix 程序控制 createprocess fork 程序控制 exitprocess exit 程序控制 waitforsingleobject wait 檔案管理 createfile open 檔案管理 readfile read 檔案管理 writefile...

MySQL在Windows和Unix下密碼恢復

mysql在windows和unix下密碼恢復 windows 1.用系統管理員登陸系統。2.停止mysql的服務。3.進入命令視窗,然後進入mysql的安裝目錄,比如我的安裝目錄是c mysql,進入 c mysql bin 4.跳過許可權檢查啟動mysql,c mysql bin mysqld ...

MySQL在Windows和Unix下密碼恢復

windows 1.用系統管理員登陸系統。2.停止mysql的服務。3.進入命令視窗,然後進入mysql的安裝目錄,比如我的安裝目錄是c mysql,進入c mysql bin 4.跳過許可權檢查啟動mysql,c mysql bin mysqld nt skip grant tables 5.重新...