第一篇:socket多人聊天程序
實現(xiàn)思路
服務器端
1.用一個Map保存“在線的用戶”,鍵——用戶的名稱
值——當前用戶對應socket對象
2.為每一個接通的客戶端(socket對象)開通一條線程,這條線程綁定的任務是: 讀取客戶端發(fā)送的消息 然后再發(fā)送每個用戶
(我們可以認為這個Map就是一個聊天室,map中的一個成員就是一個用戶);獲得當前客戶端發(fā)送過來的信息, 當前“聊天室”內(nèi)的所有“用戶”都接收到信息。
當某用用戶斷開連接表明此用戶離開了, 為這個用戶開通的這條線程結束,同時需要釋放資源,所以在finnaly塊中要 關閉流對象, 將此用戶移除Map,同時廣播某某人離開了如:客戶端
客戶端第一次登錄必須先輸入用戶名并發(fā)送給服務器注冊
System.out.println(“請輸入用戶名:”);
userName = get.readLine();
pw.println(“1-”+userName);
然后發(fā)送消息:
公聊pw.println(“2-”+username+“-”+消息內(nèi)容);私聊pw.println(“3-”+username+“-”+收消息人名字+“-”+消息內(nèi)容);
那么服務端 讀取客戶端的消息后分隔字符串msg =bufRead.readLine()String[] arrMsg=msg.split(“-”);arrMsg[0]是標識arrMsg[1]就是用戶名 判斷標識:
* 服務器收到消息 1開頭表示新加入的聊天用戶
2開頭表示公聊消息;
3開頭表示私聊消息
標識是1, 新用戶登錄,獲得當前客戶端的用戶名,加入到Map中并給每個用戶廣播某某登錄了客戶端發(fā)送格式:1-用戶名標識是2是公聊的消息,則將此消息轉發(fā)給所有用戶 客戶端發(fā)送消息的格式是:2-用戶名=消息內(nèi)容標識是3是私聊的消息,則將此消息轉發(fā)給指定用用戶 客戶端發(fā)送消息的格式是:2-發(fā)送者-接收者-消息內(nèi)容分隔字符串后arrMsg[1]消息發(fā)送者,arrMsg[2]收消息者 arrMsg[3]消息內(nèi)容
客戶器端
1.首先輸入用戶名向服務器注冊
2.定義菜單選擇是公聊或私聊
3.啟用一個線程負責讀服務器廣播的消息
4.循環(huán)向服務器發(fā)送消息 根據(jù)收消息者的名稱 到Map中找到對應的Socket ,向收消息者發(fā)送消息msg=arrMsg[1] +“對你說:”+ arrMsg[3] 根據(jù)發(fā)送者的名稱 到Map中找到對應的Socket ,向發(fā)送者發(fā)送消息msg=“你對” + arrMsg[2] +“說:”+ arrMsg[3]
第二篇:多人食物中毒程序
三礦多人食物中毒演練程序
一、演練時間、地點及單位
1、時間:2011年6月28日上午9時
2、地點:礦院內(nèi)職工食堂
3、演練單位:服務二隊、職工醫(yī)院、保衛(wèi)科、行政科
二、參演單位及范圍
1、范圍:職工食堂后院、服務二隊會議室
2、單位:服務二隊八點班人員
3、設置警戒位置及人員
4、由保衛(wèi)科負責警界設置在職工食堂東門口、職工食堂南門口和職工食堂餐廳門口處。
三、演練步驟
1、服務二隊
(1)報警:6月28日上午8時55分,由服務二隊領導王體偉向調(diào)度室報警(職工食堂有3名就餐職工出現(xiàn)食物中毒癥狀)。
(2)由服務二隊王體偉負責組織人員迅速采取措施封存食物保護現(xiàn)場和中毒人員抬運工作。
2、調(diào)度室
(1)接警:接警及時,記錄準確詳細。
(2)處警:通知指揮部成員和各專業(yè)組負責人到指揮部(調(diào)度室)集結。
(3)及時傳達指揮部指令和接聽現(xiàn)場指揮部匯報,并收集食
物中毒現(xiàn)場相關信息,傳達指令、接聽匯報及時,同時進行復述并詳細記錄。
3、指揮部
(1)集結:指揮部成員及各專業(yè)組負責人接到調(diào)度室通知后,五分鐘內(nèi)到達指揮部。
(2)召開會議:研究制定搶險救援方案(服務二隊由王體偉帶領8人,負責食物中毒人員抬運工作,保護現(xiàn)場按規(guī)定程序處置現(xiàn)場污染物和污染設施;職工醫(yī)院由夏玉林帶領6人在服務二隊臨時搶救點對食物中毒人員進行救治和轉運;保衛(wèi)科由馬金坡帶領6人負責現(xiàn)場警戒;由行政科孟建剛組織職工醫(yī)院夏玉林,保衛(wèi)科馬金坡,確定污染物并監(jiān)督污染物的處理),并立即啟動救援預案。
(3)指揮長下達指令:指揮部決定設置現(xiàn)場指揮部,由后勤副總汪和平負責擔任現(xiàn)場指揮部指揮長,隨時和調(diào)度室聯(lián)系(接受任務和復命)
4、現(xiàn)場指揮部
(1)保衛(wèi)科:人員到達指定位置后,馬金坡立即向現(xiàn)場指揮長汪和平匯報,警戒人員6人已達到位置請指示,現(xiàn)場指揮長命令立即按指定位置布置警戒。
(2)服務二隊:人員到達指定位置后,王體偉立即向現(xiàn)場指揮長汪和平匯報,服務二隊參演人員已達到位置請指示,現(xiàn)場指揮長命令立即展開保護現(xiàn)場,食物中毒人員抬運和污染物處理工作。
(3)職工醫(yī)院:人員到達指定位置后,夏玉林立即向現(xiàn)場指揮長汪和平匯報,醫(yī)務人員6人已達到位置請指示,現(xiàn)場指揮長命令
立即展開食物中毒人員的救治和轉運。
(4)行政科:人員到達指定位置后,孟建剛立即向現(xiàn)場指揮長汪和平匯報請指示,現(xiàn)場指揮長命令立即展開確定污染物并監(jiān)督處理。
(5)服務二隊:中毒人員抬運完畢、污染物處理后,王體偉向現(xiàn)場指揮長汪和平匯報;職工醫(yī)院:食物中毒人員現(xiàn)場搶救和轉運工作結束后,夏玉林向現(xiàn)場指揮長汪和平匯報;行政科:污染物已在監(jiān)督下處理完畢后,孟建剛向現(xiàn)場指揮長汪和平匯報。
現(xiàn)場指揮長汪和平向指揮部(調(diào)度室)指揮長匯報職工食堂食物中毒人員已救治和轉運,現(xiàn)場污染物已處理完畢,請指示。
5、指揮部接到現(xiàn)場指揮長的匯報,宣布演練結束
四、演練評估
1、調(diào)度室評估(由安質(zhì)科張曉輝、王 萬負責)。
2、現(xiàn)場評估(由工資科張慧碩、行政科劉懷勝負責)。
五、演練警示告知 張貼公告或會議通知。
附:應急演練指揮部成員各專業(yè)組負責人名單及聯(lián)系方式 成 員 辦公室 手機號 李 濤: 2733122 *** 曹其儉: 2733322 *** 程付剛: 2733243 *** 楊占卿: 2733118 *** 田志軒: 2733223 *** 代 峰: 2733236 *** 汪和平: 2733351 *** 曹恒山: 2733332 *** 李 榮: 2733137 *** 趙鵬喜: 2733516 *** 物資供應組: 任鐵軍: 2733326 *** 醫(yī)療救護組: 夏玉林: *** 安全保衛(wèi)組: 王延星: 2733355 *** 后勤服務組: 孟建剛: 2733369 ***
當日值班:田志軒 劉春偉 李勝利 張躍峰 張光強
劉憲鋒 白龍泉
第三篇:計算機網(wǎng)絡課程設計(簡單聊天程序的實現(xiàn))
編號:
計算機網(wǎng)絡課程設計說明書
題
目:
本地計算機網(wǎng)絡信息管理 系
別:
計算機科學與技術
專
業(yè):
計算機科學與技術
學生姓名:
xxx
學
號:
00000000000
指導教師:
xx
2011年月日
摘要
本機網(wǎng)絡信息管理器提供了有關計算機性能的信息,并顯示了計算機上主要設備信息;如果連接到網(wǎng)絡,那么還可以查看網(wǎng)絡狀態(tài)并迅速了解網(wǎng)絡是如何工作的。它的用戶界面提供了設置網(wǎng)絡信息的選項,其下還有具體的內(nèi)容設置,而且這里可以查看到當前系統(tǒng)的CPU使用比率、內(nèi)存等數(shù)據(jù),默認設置下系統(tǒng)每隔兩秒鐘對數(shù)據(jù)進行1次自動更新。
目錄
1.緒論 ………………………………………………………………………………01 1.1 IP/TCP協(xié)議常識
…………………………………………………………08 1.2 Socket的簡介
……………………………………………………………09 2.規(guī)劃設計 …………………………………………………………………………11 2.1 課題來源 ……………………………………………………………………11 2.2 需求分析
…………………………………………………………………11 3.系統(tǒng)分析與設計方案 ……………………………………………………………12 3.1 聊天系統(tǒng)的總體設計要點
………………………………………………12 3.2 聊天系統(tǒng)的設計步驟及功能模塊劃分 ……………………………………12 3.3 功能模塊結構圖
…………………………………………………………13 4.系統(tǒng)設計環(huán)境與測試
…………………………………………………………26 4.1 開發(fā)環(huán)境和工具
…………………………………………………………26 4.2 硬件環(huán)境 ……………………………………………………………………26 4.3 聊天系統(tǒng)的測試
…………………………………………………………26 5.課程設計總結 ……………………………………………………………………28 5.1 課程設計總結 ………………………………………………………………28 5.2 經(jīng)驗和感想 …………………………………………………………………28 參考文獻 …………………………………………………………………………31
計算機網(wǎng)絡課程設計報告緒論
隨著互聯(lián)網(wǎng)逐步普及,人們的生活和工作也越來越離不開信息網(wǎng)絡的支持,而聊天室是人們最常見,最直接的網(wǎng)上交流的方式。本信息管理系統(tǒng)以網(wǎng)絡設置為主,為廣大用戶提供一個簡潔的、方便的網(wǎng)絡設置方式,也是使網(wǎng)絡設置更簡單,更適用于對電腦了解不多的用戶。本文所介紹的網(wǎng)絡信息管理系統(tǒng)是基于開放的C#應用程序開發(fā)設計的,其主要特性是能動態(tài)、實時的完成信息的傳遞,且具有高效的交互性,更有效的反映本機的網(wǎng)絡設置狀況,易于維護和更新,其運行所需環(huán)境及其工作流程和各個功能控件的工作原理將在本文依次介紹,并且文中提供了部分程序源代碼。
1.1 IP/TCP協(xié)議常識
(1)IP、TCP協(xié)議的特點:
TCP/IP(Transmission Control Protocol/Internet Protocol)是傳輸控制協(xié)議/網(wǎng)際協(xié)議的縮寫, TCP/IP是當今網(wǎng)絡互聯(lián)的核心協(xié)議。TCP/IP協(xié)議的體系結構共有四個層次,即應用層、傳輸層、網(wǎng)絡互聯(lián)層和網(wǎng)絡接口層。
IP協(xié)議的作用:第一,它是網(wǎng)絡層的協(xié)議,提供互聯(lián)網(wǎng)上數(shù)據(jù)傳輸?shù)慕y(tǒng)一格式。第二,提供不可靠的無連接的服務。第三,定義了互聯(lián)網(wǎng)上的傳輸數(shù)據(jù)的基本單元,提供了供路由選擇的信息,沒有差錯校驗和處理的機制。
TCP協(xié)議的功能:差錯控制——可靠性、面向連接、分段(Segment)、端口號。TCP是傳輸控制協(xié)議,是面向連接的提供了一種可靠的傳輸服務,它用三次握手和滑動窗口機制來保證傳輸?shù)目煽啃?,及進行流量控制。
TCP/IP協(xié)議具有以下特點:
1、協(xié)議標準具有開放性,其獨立于特定的計算機硬件及操作系統(tǒng),可以免費使用。
2、統(tǒng)一分配網(wǎng)絡地址,使得每個TCP/IP 設備在網(wǎng)絡中都具有唯一的IP地址。
3、實現(xiàn)了高層協(xié)議的標準化,能為用戶提供多種可靠的服務。(2)TCP/IP協(xié)議進行傳輸數(shù)據(jù)傳輸?shù)倪^程:
應用程序為了傳輸數(shù)據(jù)會調(diào)用TCP,將數(shù)據(jù)和對應的參數(shù)傳給TCP,將TCP 數(shù)據(jù)包封裝在IP包內(nèi),通過網(wǎng)絡送給目的TCP。接收方TCP在接收到數(shù)據(jù)后通知上層應用程序,TCP將保證接收數(shù)據(jù)的正確性。在實現(xiàn)TCP的主機上,TCP可以被看成是一個模塊,和文件系統(tǒng)區(qū)別不大,TCP 也可以調(diào)用一些操作系統(tǒng)的功能,TCP不直接和網(wǎng)絡打交道,控制網(wǎng)絡的任務由專門的設備驅動模塊完成。TCP只是調(diào)用IP接口,向TCP提供所有TCP需要的服務。
(3)端口號:
計算機網(wǎng)絡課程設計報告
有的時候,一個ip地址不能完整的標識一臺服務器,這是應為一臺物理性的計算機同時運行著多個應用程序,這就需要我們來區(qū)別同一臺機子上的不同的服務,所以就在傳輸層和應用層上設置接口,就是 端口。端口實際是一個16位長的 地址,他的范圍是0~65535之間,其中0~1023是熟知端口,主要是給提供服務的應用程序使用,這些端口是所有應用進程都只道的,1024~65535為一般端口,也稱動態(tài)端口、連接端口,用來隨時分配要求通信的個客戶端應用程序。在數(shù)據(jù)傳輸過程中,各種服務器不斷的檢測分配給他的端口,一邊發(fā)現(xiàn)要求和他通信的客戶端。
1.2 Windows Management Instrumentation,Windows 管理規(guī)范
WMI(Windows Management Instrumentation,Windows 管理規(guī)范)是一項核心的 Windows 管理技術;用戶可以使用 WMI 管理本地和遠程計算機。
Windows 2K/XP和Windows 98 都支持WMI;如果為NT 4.0和Windows 95加上了 Service Pack 4或更高版本,N
WMI T 4.0和Win95也支持WMI。因此,用WMI進行遠程管理時,并非一定要用Windows 2K/XP(當然,如果WMI腳本在一臺沒有性能監(jiān)視器的Win9x機器上運行,就不能在遠程Win9x系統(tǒng)上查詢Windows 2K/XP的性能監(jiān)視器。
如前所述,WMI允許通過一個公共的接口訪問多種操作系統(tǒng)構成單元,因此不必分別對待各種底層接口或所謂的“提供者”。利用WMI可以高效地管理遠程和本地的計算機;與此相對,并非所有的Windows 2K/XP命令行工具都支持遠程運行。
WMI是WBEM模型的一種實現(xiàn)。WBEM即Web-Based Enterprise Management,或基于Web的企業(yè)管理,WBEM由DMTF(Distributed Management Task Force,分布式管理任務組)在許多廠商的幫助下創(chuàng)立,包括Compaq、Sun、Microsoft等。WBEM的目標是,為管理企業(yè)環(huán)境開發(fā)一個標準的接口集。WBEM模型最關鍵的部分是它的數(shù)據(jù)模型(或描述和定義對象的方式)、編碼規(guī)范(Encoding Specification),以及在客戶端和服務器端之間傳輸數(shù)據(jù)的模式。
WBEM的數(shù)據(jù)模型是CIM(Common Information Model,公共信息模型)。CIM是一個用來命名計算機的物理和邏輯單元的標準的命名系統(tǒng)(或稱為命名模式),例如硬盤的邏輯分區(qū)、正在運行的應用的一個實例,或者一條電纜。
CIM是一個面向對象的模型,使用一組面向對象的術語進行描述。CIM包含類(Class),計算機網(wǎng)絡課程設計報告
類是被管理單元的模板。類的實例稱為對象(Object),對象代表著底層系統(tǒng)的一個具體單元。名稱空間(Namespace)是一個類的集合,每個名稱空間面向一個特定的管理領域。類包含屬性(Property)和方法(Method)。
CIM分三層。第一層是核心模型(Core Model),這一層包含的類定義對于所有管理領域來說都是共同的。第二層是公共模型(Common Model),這一層包含的類定義對于特定的管理領域來說是公共的,但與具體的操作系統(tǒng)和系統(tǒng)設計無關。第三層是擴展模型(Extension model),這一層包含的類定義與特定的操作系統(tǒng)或技術有關。
WMI是Microsoft擴展CIM 2.0得到的面向Win32系統(tǒng)的擴展模型。引用WMI類和屬性的形式是“擴展前綴_類名稱.屬性名稱”,例如Win32_ComputerSystem.Name,其中Win32是CIM模式cimv2名稱空間內(nèi)WMI擴展類的前綴,ComputerSystem是類,Name是屬性。
編寫WMI腳本的很大一部分工作涉及到讀取和設置屬性值。當前,WMI提供的方法還很有限,但隨著時間的推移,相信WMI和CIM提供的方法都會越來越豐富。2 規(guī)劃設計
本信息管理系統(tǒng)分為三個部分:
1.首先是,是對本機的基本信息的獲取,包括CPU、內(nèi)存等,以及網(wǎng)絡信息的獲取,包括域名、工作組等,最后還用CPU、內(nèi)存等使用情況的監(jiān)視。
2.其次,是對本機的所有可用網(wǎng)絡適配器的設置,包括IP地址、子網(wǎng)掩碼、DNS服務器地址等等。
3.然后,是對本機的共享內(nèi)容的管理,包括共享文件夾的添加和取消,網(wǎng)絡服務的查看等。
4.最后,是對所有本機網(wǎng)絡連接的監(jiān)控和統(tǒng)計。系統(tǒng)分析與設計方案
3.1 信息管理系統(tǒng)的總體設計要點
1.本系統(tǒng)以實用為主,實現(xiàn)的都是用戶最常用的功能,簡化了系統(tǒng)自帶的軟件的使用。2.本系統(tǒng)界面設計直觀,易用性強。
3.2 系統(tǒng)各功能模塊
(1)本機基本信息獲取
使用了PerformanceCounter和WMI等方式獲取系統(tǒng)信息,以及通過讀取注冊表讀取本機操作系統(tǒng)信息,通過線程的方式監(jiān)控系統(tǒng)性能。
源碼:
計算機網(wǎng)絡課程設計報告
PerformanceCounter pc = new PerformanceCounter(“Memory”, “Available MBytes”);
PerformanceCounter cpu = new PerformanceCounter(“Processor”, “% Processor Time”, “_Total”);
Thread m_thread;
[DllImport(“IpHlpApi.dll”)]
extern static public uint GetIfTable(byte[] pIfTable, ref uint pdwSize, bool bOrder);
public Form1()
{
new Form2().Show();
InitializeComponent();
RegistryKey rk;
DirectoryEntry root = new DirectoryEntry(“WinNT:”);
string strDomain = null, cpuid = null, meo = null;
foreach(DirectoryEntry Domain in root.Children)
{
//枚舉工作組或域
strDomain = strDomain + “ ” + Domain.Name;
}
ManagementClass mClass = new ManagementClass(“Win32_Processor”);
計算機網(wǎng)絡課程設計報告
ManagementObjectCollection moCollection = mClass.GetInstances();
foreach(ManagementObject mObject in moCollection)
{
cpuid += mObject[“Name”].ToString()+ “ ”;
}
mClass = new ManagementClass(“Win32_PhysicalMemory”);
moCollection = mClass.GetInstances();
foreach(ManagementObject mObject in moCollection)
{
meo += mObject[“Capacity”].ToString();
}
rk = Registry.LocalMachine.OpenSubKey(“SoftwareMicrosoftWindows NTCurrentVersion”);
label6.Text = System.Environment.MachineName;
label8.Text = System.Net.Dns.GetHostEntry(“LocalHost”).HostName;
label9.Text = rk.GetValue(“ProductName”).ToString()+ “ ” + rk.GetValue(“CurrentVersion”).ToString()+ “.” + rk.GetValue(“CurrentBuildNumber”).ToString();
label10.Text = strDomain;
label11.Text = cpuid;
計算機網(wǎng)絡課程設計報告
label12.Text = meo + “ 字節(jié)”;
progressBar1.Maximum =(int)(float.Parse(meo)/ 1048576.0);
m_thread = new Thread(new ThreadStart(workr));
m_thread.IsBackground = true;
m_thread.Start();
ManagementClass mc = new ManagementClass(“Win32_NetworkAdapterConfiguration”);
ManagementObjectCollection moc = mc.GetInstances();
foreach(ManagementObject mo in moc)
{
if((bool)mo[“IPEnabled”] == true)
comboBox1.Items.Add(mo[“Description”].ToString());
}
comboBox1.Enabled = true;
計算機網(wǎng)絡課程設計報告
mc = new ManagementClass(“Win32_Service”);
moc = mc.GetInstances();
foreach(ManagementObject mo in moc)
{
if(mo[“StartName”].ToString()== “NT AUTHORITYNetworkService”)
comboBox2.Items.Add(mo[“Caption”].ToString());
}
comboBox2.Enabled = true;
mc.Dispose();
moc.Dispose();
maskedTextBox1.AllowPromptAsInput = false;private delegate void dfun();
private void workr(){ while(true){ Thread.Sleep(500);work();} }
private void work()
{
if(this.progressBar1.InvokeRequired && this.progressBar2.InvokeRequired)
{
try
計算機網(wǎng)絡課程設計報告
{
dfun df = new dfun(work);
this.Invoke(df);
}
catch { };
}
else
{
this.progressBar1.Value =(int)this.pc.NextValue();
this.label13.Text = this.progressBar1.Value.ToString()+ “MB / ” + this.progressBar1.Maximum.ToString()+ “MB”;
this.progressBar2.Value =(int)cpu.NextValue();
this.label16.Text = DateTime.Now.ToString();
}
}
(2)網(wǎng)絡設置部分主要通過WMI獲取和設置本機網(wǎng)絡適配器的信息和設置,可以自動獲取當前可用的適配器,同時,能對不符合規(guī)范的的設置進行提示。具體的源碼如下:
e)
{
private void comboBox1_SelectionChangeCommitted(object sender, EventArgs
計算機網(wǎng)絡課程設計報告
ManagementObjectSearcher query = new
ManagementObjectSearcher(“SELECT
*
FROM Win32_NetworkAdapterConfiguration WHERE IPEnabled = 'TRUE'”);
ManagementObjectCollection queryCollection = query.Get();
foreach(ManagementObject mo in queryCollection)
{
if(mo[“Description”].ToString()== comboBox1.Text)
{
string[] ipad =(string[])mo[“IPAddress”];
label23.Text = ipad[0];
string[] subnets =(string[])mo[“IPSubnet”];
label24.Text = subnets[0];
string[] defaultgateways =(string[])mo[“DefaultIPGateway”];
if(defaultgateways!= null)
label27.Text = defaultgateways[0];
else label27.Text = “";
label26.Text = mo[”MACAddress“].ToString();
string[] dns =(string[])mo[”DNSServerSearchOrder“];
if(dns!= null)
label28.Text = dns[0];
else if(dns == null)
label29.Text = ”“;
else if(dns.Length == 2)
label29.Text = dns[1];
else { label29.Text = ”“;}
}
}
}
/*
private void button3_Click(object sender, EventArgs e)
{
計算機網(wǎng)絡課程設計報告
string[] mac = maskedTextBox5.Text.Split(':');
string pstr = ”^[0-9a-fA-F]+$“;
string ma=”“;
for(int n = 0;n < 5;n++)
if(!Regex.IsMatch(mac[n],pstr))
{
MessageBox.Show(”MAC地址為16進制,即00~FF“, ”錯誤“);
goto L1;
}
else ma += mac[n]+”:“;
ma = ma.Substring(0, ma.Length1);
gat = true;
}
if(!maskedTextBox7.Text.Equals(pstr))
{
for(int n = 0;n < 4;n++)
if(int.Parse(dns[n])> 255 || int.Parse(gate[n])< 0)
{
MessageBox.Show(”IP數(shù)值不對!數(shù)值為1~255“, ”錯誤“);
goto L4;
計算機網(wǎng)絡課程設計報告
}
for(int i = 0;i <= 3;i++)
{
DnsStr +=(dns[i].Trim()+ ”.“);
}
DnsStr = DnsStr.Substring(0, DnsStr.Length1);
dnb = true;
}
ManagementClass
mc
= ManagementClass(”Win32_NetworkAdapterConfiguration“);
ManagementObjectCollection moc = mc.GetInstances();
foreach(ManagementObject mo in moc)
{
if((bool)mo[”IPEnabled“])
{
if(mo[”Description“].ToString()== comboBox1.Text)
{
new
計算機網(wǎng)絡課程設計報告
if(gat == true)
{
ManagementBaseObject mo.GetMethodParameters(”SetGateways“);
newGate[”DefaultIPGateway“] = new string[] { GateStr };
ManagementBaseObject mo.InvokeMethod(”SetGateways“, newGate, null);
label27.Text = mo[”DefaultIPGateway“].ToString();
}
if(dn == true)
{
string[] temp =(string[])mo[”DNSServerSearchOrder“];
ManagementBaseObject mo.GetMethodParameters(”SetDNSServerSearchOrder“);
newDns[”DNSServerSearchOrder“] = new string[] { DnsStr, temp[1] };
ManagementBaseObject mo.InvokeMethod(”SetDNSServerSearchOrder“, newDns, null);
temp =(string[])mo[”DNSServerSearchOrder“];
label28.Text = temp[0];
}
if(dnb == true)
{
string[] temp =(string[])mo[”DNSServerSearchOrder“];
ManagementBaseObject mo.GetMethodParameters(”SetDNSServerSearchOrder“);
newDnsb[”DNSServerSearchOrder“] = new string[] { temp[1], DnsbStr };
ManagementBaseObject mo.InvokeMethod(”SetDNSServerSearchOrder“, newDnsb, null);
temp =(string[])mo[”DNSServerSearchOrder“];
label29.Text = temp[1];
}
mo.Dispose();
setDnsb
=
newDnsb
=
setDns
=
newDns
=
setGate
=
newGate
=
計算機網(wǎng)絡課程設計報告
}
}
}
string[] str = maskedTextBox1.Text.Split('.');
string[] str1 = maskedTextBox4.Text.Split('.');
ManagementClass
mc1
=
new ManagementClass(”Win32_NetworkAdapterConfiguration“);
ManagementObjectCollection moc1 = mc.GetInstances();
if(255 < int.Parse(str[0])|| 255 < int.Parse(str[1])|| 255 < int.Parse(str[2])|| 255 < int.Parse(str[3])|| int.Parse(str[0])< 1 || int.Parse(str[1])< 0 || int.Parse(str[2])< 0 || int.Parse(str[3])< 1 ||
255 < int.Parse(str1[0])|| 255 < int.Parse(str1[1])|| 255 < int.Parse(str1[2])|| 255 < int.Parse(str1[3])|| int.Parse(str1[0])< 1 || int.Parse(str1[1])< 0 || int.Parse(str1[2])< 0 || int.Parse(str1[3])< 0)MessageBox.Show(”IP數(shù)值不對!數(shù)值為1~255“, ”錯誤“);
else
foreach(ManagementObject mo in moc1)
{
if((bool)mo[”IPEnabled“])
{
if(mo[”Description“].ToString()== comboBox1.Text)
{
string IPStr = ”“, subStr = ”“;
for(int i = 0;i <= 3;i++)
{
IPStr +=(str[i].Trim()+ ”.“);
}
for(int i = 0;i <= 3;i++)
{
subStr +=(str1[i].Trim()+ ”.“);
}
IPStr = IPStr.Substring(0, IPStr.Length1);
ManagementBaseObject
newIP
=
計算機網(wǎng)絡課程設計報告
mo.GetMethodParameters(”EnableStatic“);
newIP[”IPAddress“] = new string[] { IPStr };
newIP[”SubnetMask“] = new string[] { subStr };
ManagementBaseObject setIP mo.InvokeMethod(”EnableStatic“, newIP, null);
label23.Text = IPStr;
label24.Text = subStr;
mc.Dispose();
}
}
}
L4:;
}
private void button4_Click(object sender, EventArgs e)
{
ManagementClass
wmi
= ManagementClass(”Win32_NetworkAdapterConfiguration“);
ManagementObjectCollection moc = wmi.GetInstances();
foreach(ManagementObject mo in moc)
{
//如果沒有啟用IP設置的網(wǎng)絡設備則跳過
if(mo[”Description“].ToString()!= comboBox1.Text)
continue;
//重置DNS為空
mo.InvokeMethod(”SetDNSServerSearchOrder“, null);
//開啟DHCP
mo.InvokeMethod(”EnableDHCP", null);
}
=
new
計算機網(wǎng)絡課程設計報告
} 4 系統(tǒng)設計與實現(xiàn) 4.1開發(fā)環(huán)境工具
基本系統(tǒng)的設計主要運用C#與語言與WMI類結合而開發(fā)。其開發(fā)的主要環(huán)境包括:
操作系統(tǒng):Windows 7 集成開發(fā)環(huán)境:Microsoft Visual Studio 2010和.NET Framework 4.0 使用環(huán)境: Windows 2K/XP以上和.NET Framework環(huán)境
4.2 硬件環(huán)境
本系統(tǒng)運行環(huán)境所需用到的環(huán)境為: 硬件配置 :
CPU:intel core duo t6400 2.0G的處理器; 硬
盤:160GB以上硬盤; 內(nèi)
存:2G DDR內(nèi)存;
顯
卡:NVIDIA Geforce 9600M GS 512M顯存顯卡
軟件環(huán)境:WINDOWS XP、Visual Studio 2010、.NET Framework4.0等。
4.3網(wǎng)站功能模塊的測試
圖1 本機信息獲取
計算機網(wǎng)絡課程設計報告
圖2 網(wǎng)絡設置
圖3 共享設置
圖4 網(wǎng)絡監(jiān)控 總 結
計算機網(wǎng)絡課程設計報告
5.1 課程設計總結
本課程設計實現(xiàn)了簡單的本機網(wǎng)絡系統(tǒng)的管理功能,經(jīng)過細心的調(diào)試和排錯解決了絕大部分的問題。但幾乎每一個計算機程序都會有這樣那樣的不足,尤其是未經(jīng)過精心維護的非商業(yè)軟件。本管理系統(tǒng)程序對于初涉此領域的畢業(yè)設計課題來說,尤其在開始初期,感覺系統(tǒng)調(diào)用復雜,難以控制,因此至今還有許多未能解決的缺陷。
目前本管理系統(tǒng)還有待完善的功能如下:
1、沒有做到每個進程的網(wǎng)絡流量的實時監(jiān)控;
2、沒有實現(xiàn)進程管理;
3、沒有考慮到安全問題。
盡管課程設計到現(xiàn)在已接近尾聲,但是對于上述的缺陷,本人還會不斷對系統(tǒng)進一步的完善它,期望在今后的日子里憑借自身的技術把系統(tǒng)做成一套深受歡迎的系統(tǒng)設置軟件。
5.2 經(jīng)驗和感想
基于C#和WMI天程序作為課程設計,是本人目前做過的最大的程序。
平時自己也常到其它系統(tǒng)優(yōu)化軟件,因此,自己也曾想過要制作一款自己的系統(tǒng)管理軟件。學習該平臺背景和功能的時間遠遠超出了我想象的時間。在學習期間,本人還通過網(wǎng)上的各種C#源碼進行學習與研究,我原以為這樣的設計水平將無法完成設計,但當掌握了大部分應用技巧時,剩下的系統(tǒng)思路的設計就顯得不是最大的障礙了。
我在2周內(nèi)寫完這個程序,經(jīng)過了很多次的調(diào)試,終于完成了現(xiàn)在的程序。原先認為不可能的事,我發(fā)現(xiàn),如果有不畏困難的信心和肯鉆研的勇氣,就一定會完成,甚至達到意想不到的效果。
參
考
文
獻 C#應用程序設計教程 作 者: 耿肇英 耿燚 耿肇英 耿燚 2 Visual C#程序設計實用教程 作 者: 楊建軍
第四篇:socket編程實驗心得體會
實驗心得體會
在本次實驗中,我通過對網(wǎng)絡課上所學知識的應用,學到了很多實踐中的知識。并且加深了我對課本知識的理解和認識,在實驗過程中,更容易記憶和深入理解各種協(xié)議的工作以及在網(wǎng)絡編程中應該注意的一系列問題。
我們的第一個實驗是對ARP、ICMP、FTP和HTTP協(xié)議的分析和驗證。在利用軟件Etherpeek抓取在主機通信中的報文,得到了很多的關于這些協(xié)議的具體參數(shù)。在課程學習過程中,書本和老師給我的感覺就是太枯燥,通過課本的學習根本沒有辦法理解各種協(xié)議的工作細節(jié)。有很多的細微之處是想不通的。但是,在本次實驗中,我就通過各種報文的分析,看到了網(wǎng)絡中不同層次協(xié)議之間的協(xié)做過程。對應不同層之間就是通過協(xié)議來使用,我對整個網(wǎng)路的大體架構有了一個統(tǒng)籌的了解,雖然對很多的更深入的知識不是很了解,但是比我在課上學的東西要更有趣,而且容易學習,更能夠我學習的興趣。
第二個實驗是Socket編程實驗。在編寫網(wǎng)絡程序之前,我對網(wǎng)路通信可以說一無所知,根本不知道那些網(wǎng)路上的程序是怎么通過網(wǎng)路進行通信的。在本次實驗中,終于揭開了他們神秘的面紗。當然在實驗中出現(xiàn)了很多的插曲,我是在Linux環(huán)境下編寫的程序,很多技術方面的問題都無法解決。查閱書籍和網(wǎng)上咨詢才弄懂了他們的來龍去脈,最終是將我的程序編寫完了。開始接觸網(wǎng)路編程時,那是一頭霧水,根本不知從何下手。在看了輔導教員給我們程序之后才有了很多的起色,才能夠自己編寫程序。在網(wǎng)絡編程中,我最深的體會就是對具體的內(nèi)部細節(jié)不熟悉,導致在調(diào)試的過程中感覺到很無力。在很多函數(shù)的作用下,經(jīng)常就是一團亂麻。之后,我每次編寫之前就是將用到的函數(shù)的用法溫習一下,最后還是能夠解決很多的問題的。
本次試驗是我們學習網(wǎng)路的第一次。以前的課程從來沒有接觸到網(wǎng)路方面的知識。這次的新知識對我們的挑戰(zhàn)還算不是太大,通過我們的努力,所有的困難時被克服掉了。其實,實驗應該是我們的重點,在以后的工作中要的就是我們的實際的動手能力,如果我們在學習期間就是只學了書本上的知識,那樣對理論的了解是不夠深刻的,只有通過實驗才能激發(fā)我們的學習興趣??傊矣X得實驗才是檢驗理論的唯一標準。
第五篇:c語言簡單socket通信
server:
#include
#include
#pragma comment(lib,“ws2_32.lib”)
int main(int argc, char* argv[]){
//3?ê??ˉWSA
WORD sockVersion = MAKEWORD(2,2);WSADATA wsaData;if(WSAStartup(sockVersion, &wsaData)!=0){return 0;} //′′?¨ì×?ó×? SOCKET slisten = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);if(slisten == INVALID_SOCKET){printf(“socket error!”);return 0;} //°ó?¨IPoí???ú sockaddr_in sin;sin.sin_family = AF_INET;sin.sin_port = htons(8888);sin.sin_addr.S_un.S_addr = INADDR_ANY;if(bind(slisten,(LPSOCKADDR)&sin, sizeof(sin))== SOCKET_ERROR){printf(“bind error!”);} //?aê??àìy if(listen(slisten, 5)== SOCKET_ERROR){} //?-?·?óê?êy?Y SOCKET sClient;sockaddr_in remoteAddr;printf(“l(fā)isten error!”);return 0;
char revData[255];while(true){printf(“μè′yá??ó...n”);sClient = accept(slisten,(SOCKADDR *)&remoteAddr, &nAddrlen);if(sClient == INVALID_SOCKET)
{
printf(“accept error!”);
continue;
}
printf(“?óêüμ?ò???á??ó£o%s
inet_ntoa(remoteAddr.sin_addr));
//?óê?êy?Y
int ret = recv(sClient, revData, 255, 0);
if(ret > 0)
{
revData[ret] = 0x00;
printf(revData);
}
//·¢?íêy?Y
char * sendData = ”??o?£?TCP?í?§??£?n“;
send(sClient, sendData, strlen(sendData), 0);
closesocket(sClient);
}
closesocket(slisten);
WSACleanup();
return 0;
}
client:
#include
#include
#pragmacomment(lib,”ws2_32.lib“)
rn”,int main(int argc, char* argv[])
{
WORD sockVersion = MAKEWORD(2,2);
WSADATA data;
if(WSAStartup(sockVersion, &data)!= 0)
{
return 0;
}
SOCKET sclient = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);if(sclient == INVALID_SOCKET)
{
printf(“invalid socket!”);
return 0;
}
sockaddr_in serAddr;
serAddr.sin_family = AF_INET;
serAddr.sin_port = htons(8888);
serAddr.sin_addr.S_un.S_addr = inet_addr(“127.0.0.1”);
if(connect(sclient,(sockaddr *)&serAddr, sizeof(serAddr))SOCKET_ERROR)
{
printf(“connect error!”);
closesocket(sclient);
return 0;
}
char * sendData = “??o?£?TCP·t????£??òê??í?§??!n”;
send(sclient, sendData, strlen(sendData), 0);
char recData[255];
int ret = recv(sclient, recData, 255, 0);
if(ret > 0)
{
recData[ret] = 0x00;
printf(recData);
}
closesocket(sclient);
WSACleanup();
return 0;
} ==