freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內(nèi)容

一種遠(yuǎn)程管理linux系統(tǒng)工具的設(shè)計(jì)與實(shí)現(xiàn)-資料下載頁(yè)

2025-08-24 11:25本頁(yè)面
  

【正文】 連接建立TCP3 次握手連接成功否是主界面第 22 頁(yè) 共 33 頁(yè) clloButt = gtk_button_new_with_label(connect)。 clloLabl = gtk_label_new(Servers IP)。 textbox = gtk_entry_new()。 table = gtk_table_new (2, 3, TRUE)。 gtk_table_set_row_spacing(GTK_TABLE(table),1,10)。 gtk_table_set_row_spacing(GTK_TABLE(table),0,10)。 gtk_table_set_col_spacing(GTK_TABLE(table),1,35)。 gtk_entry_set_text((GtkEntry *)textbox,input severs IP here!)。 text = gtk_entry_get_text((GtkEntry *)textbox)。 gtk_table_attach_defaults((GtkTable*)table,clloLabl,0,1,0,1)。 gtk_table_attach_defaults((GtkTable*)table,textbox,1,2,0,1)。 gtk_table_attach_defaults((GtkTable*)table,clloButt,0,2,1,2)。 gtk_table_attach_defaults((GtkTable*)table,exitButt,0,2,2,3)。 gtk_container_set_border_width (GTK_CONTAINER (mainWin), 0)。 gtk_container_add (GTK_CONTAINER (mainWin), table)。 gtk_signal_connect(GTK_OBJECT(exitButt),clicked,GTK_SIGNAL_FUNC(Destroy),NULL)。 gtk_signal_connect(GTK_OBJECT(mainWin),destroy,NULL,NULL)。 gtk_signal_connect(GTK_OBJECT(clloButt),clicked,GTK_SIGNAL_FUNC(CollFunc), sock)。 gtk_signal_connect_object(GTK_OBJECT(exitButt),clicked,GTK_SI GNAL_FUNC(Destroy),GTK_OBJECT(mainWin))。 gtk_widget_show(mainWin)。 gtk_widget_show(exitButt)。 gtk_widget_show(clloButt)。 gtk_widget_show(clloLabl)。 gtk_widget_show(textbox)。第 23 頁(yè) 共 33 頁(yè) gtk_widget_show(table)。 gtk_main()。}上面函數(shù)大概反映了 GTK 變成中常用的構(gòu)件和函數(shù)。前面對(duì)里面大部分代碼介紹過(guò)了。這里就不詳細(xì)介紹了。但是需要指出的是gtk_signal_connect(GTK_OBJECT(clloButt),clicked,GTK_SIGNAL_FUNC(CollFunc), sock)。這個(gè)函數(shù)主要是用來(lái)綁定 X 事件,也就是當(dāng)用戶按下了連接按鈕后調(diào)用 CollFunc()這個(gè)函數(shù)。CollFunc()主要作用是讀取文本框中的字符,并且用這個(gè)來(lái)作為連接服務(wù)器的IP,向服務(wù)器提出連接請(qǐng)求,連接成功就進(jìn)入主界面,并且銷毀連接界面的構(gòu)件。不成功就返回到連接界面。CollFunc()函數(shù)如下:void CollFunc( GtkWidget *widget,gpointer data ) { int *sock,result。 char *text = NULL。 sock = data。 text = gtk_entry_get_text((GtkEntry *)textbox)。 *sock = make_cli_sock(text,13000)。 if(*sock 0){return 。} init_cli(sock)。 mainform(sock)。 gtk_widget_destroy(mainWin)。}? 主界面當(dāng)用戶端和服務(wù)器端連接成功后,就進(jìn)入主窗體流程了,在主窗體建立前要接收一些從服務(wù)程序發(fā)送過(guò)來(lái)的數(shù)據(jù),然后把這些數(shù)據(jù)存放到一些臨時(shí)文件里面,等待具體創(chuàng)建窗體的時(shí)候調(diào)用這些數(shù)據(jù)來(lái)初始化界面。其流程如圖 11 所示。第 24 頁(yè) 共 33 頁(yè)圖 11 主界面的大概流程圖主窗體有各個(gè)功能模塊的操作頁(yè)面,程序主界面如圖 12 所示。圖 12 程序主界面(1)用戶操作Linux 是一個(gè)多用戶、多任務(wù)的操作系統(tǒng)。在用戶操作方面我們主要實(shí)現(xiàn)的是對(duì)用戶的添加,刪除和修改。當(dāng)主界面創(chuàng)建好了后就等待用戶的操作了,用戶的操作界面如圖 13所示。圖 13 用戶操作界面 添加用戶:當(dāng)用戶按了添加用戶按鈕后,就調(diào)用了 User_Add()函數(shù)對(duì)這個(gè)事件來(lái)響應(yīng)。其功能是創(chuàng)建一個(gè)臨時(shí)界面,讓用戶輸入要添加的用戶的用戶名和密碼,在判斷了輸入文把控制權(quán)戰(zhàn)時(shí)交給了 X 系統(tǒng)等待用戶操作Apachegtk_main()UserControlgtk_widow_newGroupControlInitServerDNSftp第 25 頁(yè) 共 33 頁(yè)本框都不為空的時(shí)候,先傳遞給服務(wù)器一個(gè)“User”字符串,再傳遞一個(gè)一個(gè)“adduser”字符串,這些的傳遞是為了讓服務(wù)器能夠首先通過(guò)判斷這些字符串來(lái)到添加用戶流程里面。其界面如圖 14 所示。圖 14 添加用戶界面當(dāng)圖 14 的 Entry 按鍵被按下了后,就從上圖中的文本框中讀取字符串,再判斷字符串是否為空,不為空就把 UserNane,FullName,Password 所對(duì)應(yīng)的字符串分別傳遞服務(wù)器端。讓服務(wù)器端通過(guò)傳遞過(guò)來(lái)的數(shù)據(jù)實(shí)現(xiàn)添加用戶。然后再?gòu)姆?wù)器端讀取操作的結(jié)果。在把結(jié)果顯示給用戶。如圖 15 所示。圖 15 添加用戶返回刪除用戶:選種了列表中的要?jiǎng)h除的用戶,這個(gè)時(shí)候程序會(huì)調(diào)用selection_call_back()函數(shù)。把用戶所選種的列表框的用戶的信息保存在全句變量中。刪除按鈕后被按下了后,就調(diào)用 User_Del()函數(shù)。User_Del()函數(shù)先向服務(wù)器發(fā)送一個(gè)“User”字符串,和傳遞一個(gè)“deluser”字符串,然后就把要?jiǎng)h除的用戶名發(fā)送給服務(wù)程序。再接收服務(wù)程序發(fā)送過(guò)來(lái)的操作結(jié)果,顯示給用戶。修改用戶:當(dāng)用戶從列表框里面選中了要修改的用戶后,和刪除用戶操作一樣的會(huì)調(diào)用 selection_call_back()函數(shù),把操作用戶所選中的用戶保存在一個(gè)全局變量中。圖 14中的 Porperty 被點(diǎn)擊了后,創(chuàng)建一個(gè)臨時(shí)的窗體,用來(lái)顯示當(dāng)前所選中的用戶屬性。并且向服務(wù)程序發(fā)送一個(gè)“User”字符串,其界面圖如 16 所示。第 26 頁(yè) 共 33 頁(yè)圖 16 用戶屬性界面OK 按鈕所觸發(fā)的事件是先向服務(wù)器發(fā)送一個(gè)“property”字符串,然后讀取文本框中的數(shù)據(jù),把這些數(shù)據(jù)一起發(fā)送給服務(wù)程序。cancel 按鈕所觸發(fā)的事件是向服務(wù)器發(fā)送一個(gè)“exit”字符串。刷新按鈕所觸發(fā)的事件是:調(diào)用 UserScan()函數(shù)。這個(gè)函數(shù)主要作用是向服務(wù)器端發(fā)送一個(gè)“userscan”字符串,然后服務(wù)程序會(huì)讀取這個(gè)時(shí)候的/etc/passwd 的內(nèi)容,并且傳遞給發(fā)送到客戶程序,客戶程序把服務(wù)程序傳過(guò)來(lái)的數(shù)據(jù)存儲(chǔ)在臨時(shí)的文件里面,然后把列表框中的數(shù)據(jù)清空,在從臨時(shí)文件中讀取當(dāng)前的用戶信息,重新顯示在列表框中來(lái)。(2) 用戶組的操作:具有某種共同特征的用戶集合起來(lái)就是用戶組(Group) 。在Linux 系統(tǒng)中文件的訪問(wèn)權(quán)限有這嚴(yán)格的規(guī)定,組在 Linux 系統(tǒng)中有很重要的作用。和上面用戶的操作過(guò)程大概相同,當(dāng)組頁(yè)面建立好了后,馬上就從客戶端創(chuàng)建的臨時(shí)文件中讀取服務(wù)器當(dāng)前的組狀態(tài)。用來(lái)初始化列表。組的操作的界面如圖 17 所示。添加組:添加組的事件是在 GroupAdd 按鈕按下了后,先是向服務(wù)程序發(fā)送一個(gè)“group”字符串和“addgroup”字符串。然后再把從組添加組界面得到的數(shù)據(jù)發(fā)送到服務(wù)程序。等服務(wù)程序返回結(jié)果了后,再把服務(wù)程序返回的結(jié)果顯示給用戶。刪除組:刪除組的操作大概過(guò)程和刪除用戶相似,也是在選中了要?jiǎng)h除的組后,調(diào)用group_selection_call_back()函數(shù),來(lái)把組的組名等信息存儲(chǔ)在一個(gè)全局變量中。當(dāng)用戶按下了 GroupDel 按鈕后,向服務(wù)器端發(fā)送一個(gè)“group”字符串和一個(gè)“delgroup”字符串,然后發(fā)送要?jiǎng)h除的組名到服務(wù)器程序。通過(guò)服務(wù)器程序來(lái)刪除服務(wù)器端的組。接收服務(wù)程序發(fā)送過(guò)來(lái)的操作結(jié)果,把結(jié)果顯示給用戶。刷新組:當(dāng)刷新按鈕被按下了后就調(diào)用 group_fresh_button_click ()函數(shù)。這個(gè)函數(shù)主要作用是向服務(wù)器端發(fā)送“group”字符串和“refresh_group”字符串,然后服務(wù)程序會(huì)讀取這個(gè)時(shí)候的組配置文件的內(nèi)容,傳遞給客戶程序,客戶程序把服務(wù)器傳過(guò)來(lái)的數(shù)據(jù)存儲(chǔ)在臨時(shí)的文件里面,然后把列表框中的數(shù)據(jù)清空,再?gòu)呐R時(shí)文件中讀取當(dāng)前的用戶信息,重新顯示在列表框中來(lái)。第 27 頁(yè) 共 33 頁(yè)圖 17 用戶組的操作界面圖(3) 系統(tǒng)服務(wù)初始化系統(tǒng)服務(wù)初始化,主要是對(duì)系統(tǒng)要啟動(dòng)的服務(wù)管理,是否要在系統(tǒng)啟動(dòng)的時(shí)候啟動(dòng)這些服務(wù)。在 Linux 系統(tǒng)中有 60 多個(gè)啟動(dòng)服務(wù),但是這里我們就選了五個(gè)常用的服務(wù)來(lái)配置。操作界面如圖 18 所示。圖 18 系統(tǒng)啟動(dòng)服務(wù)管理當(dāng)這個(gè)界面創(chuàng)建好了后,就要從服務(wù)器端接收一個(gè)字符串?dāng)?shù)組,這個(gè)字符串?dāng)?shù)組只有0 或者 1??蛻舳私邮樟藬?shù)組后,通過(guò)這些字符來(lái)判斷當(dāng)前服務(wù)器的啟動(dòng)項(xiàng)目中有沒(méi)有這些服務(wù)的啟動(dòng),有就在相應(yīng)的服務(wù)上面打勾,沒(méi)有就不打。用于顯示服務(wù)名的構(gòu)件是 check按鈕構(gòu)件,這個(gè)構(gòu)件是特殊的按鈕。這些按鈕所對(duì)應(yīng)的事件是設(shè)置其 Active 屬性。Save 按鈕所對(duì)應(yīng)的回調(diào)函數(shù)是 main_init_save_click(),該函數(shù)先向服務(wù)程序發(fā)送“sysconfig”和“save”字符串。然后分別讀取 5 個(gè) check 按鈕的 Active 屬性,再根據(jù)其 Active 屬性來(lái)設(shè)置要發(fā)送的數(shù)據(jù),然后就是發(fā)送數(shù)據(jù)到服務(wù)程序。Freash 按鈕對(duì)應(yīng)的回調(diào)函數(shù)作用,是先發(fā)送一個(gè)“sysconfig”和“freash”字符串,然后就接收服務(wù)器端的數(shù)據(jù),通過(guò)傳過(guò)來(lái)的數(shù)據(jù)來(lái)設(shè)置每個(gè)開(kāi)關(guān)按鈕的 Active 屬性。(4) DNS 服務(wù)管理操作DNS 服務(wù)是一個(gè) IP 到域名的轉(zhuǎn)換服務(wù),其配置界面如圖 19 所示。第 28 頁(yè) 共 33 頁(yè)圖 19 DNS 的配置界面DNS 中所顯示服務(wù)器的 zone 是采用樹(shù)構(gòu)件,這個(gè)構(gòu)件在創(chuàng)建的時(shí)候就要對(duì)其初始化。也就是把接收到的服務(wù)器的信息建立在樹(shù)構(gòu)件里面,樹(shù)的構(gòu)件過(guò)程相對(duì)列表要復(fù)雜點(diǎn)。先是從臨時(shí)的 DNS 配置文件中讀取 zone 的名字,顯示在樹(shù)的根部,然后再向服務(wù)程序發(fā)送zone 的名字,服務(wù)器端再通過(guò) zone 的名字,將從其對(duì)應(yīng)的數(shù)據(jù)文件中讀取 Domain 的信息,再返回給客戶端,客戶端接收了這個(gè)返回信息后,通過(guò)信息來(lái)建立子樹(shù)。添加 zone:添加 zone 按鈕所對(duì)應(yīng)的事件,調(diào)用 main_dns_addzone_click()函數(shù),然后建立一個(gè)臨時(shí)的窗體,用來(lái)記錄要?jiǎng)?chuàng)建的 zone 名字和類型。然后再讀取這些信息后,向服務(wù)器端發(fā)送一個(gè)“dnsconfig”字符串和一個(gè)“addtozone”字符串和記錄的 zone 名字和類型。讓服務(wù)器通過(guò)發(fā)送的字符來(lái)添加 zone。最后接收一個(gè)由服務(wù)程序發(fā)回來(lái)的返回值,并顯示添加的操作是否成功。刪除 zone:當(dāng)用戶選用了一個(gè)頂樹(shù),把樹(shù)的名字傳遞給一個(gè)全局變量中,然后向服務(wù)器發(fā)送一個(gè)“dnsconfig”字符串和一個(gè)“delzone”字符串,后就向服務(wù)程序傳送要?jiǎng)h除的 zone 的名。然后接收一個(gè)由服務(wù)器返回來(lái)的值,并顯示刪除操作是否成功。在 zone 添加成功后,有時(shí)候我們要向 zone 里面添加和刪除一些 Domain 的信息。下面就是這些操作的過(guò)程。添加 Domain:addDomain 按鈕的回調(diào)函數(shù)作用是:顯示一個(gè)窗題,并且在窗體中輸入了要添加到 zone 的 domain 后,并且按下了確定按鈕后,先向服務(wù)端發(fā)送一個(gè)“dnsconfig”和一個(gè)“addtozone”字符串,讓服務(wù)程序進(jìn)入添加的 domian 流程,然后把窗體文本框的數(shù)據(jù)讀取后發(fā)送到服務(wù)程序。(5) Apache 服務(wù)Apache 服務(wù)是一個(gè) WEB 服務(wù),其配置界面如圖 20 所示。第 29 頁(yè) 共 33 頁(yè)圖 20 Apache 配置界面在它的界面建立的同時(shí),也要從一個(gè)臨時(shí)文件中讀取從服務(wù)程序傳送過(guò)來(lái)的原配置文件的信息,示給用戶,用戶可以通過(guò)文本框和 Label 看到現(xiàn)在 Apache 配置文件的一部分信息。VieErroLog 按鈕的回調(diào)函數(shù)作用:先向服務(wù)器端發(fā)送“Apachecon”和“viewlog”字符串,等服務(wù)器端從錯(cuò)誤日志文件中讀取數(shù)據(jù),然后把數(shù)據(jù)發(fā)送到客戶端,客戶端在讀取這些數(shù)據(jù),然后再創(chuàng)建一
點(diǎn)擊復(fù)制文檔內(nèi)容
環(huán)評(píng)公示相關(guān)推薦
文庫(kù)吧 www.dybbs8.com
備案圖鄂ICP備17016276號(hào)-1