




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
ATM機自動報警系統(tǒng)任務1:服務器端功能實現任務2:客戶端功能實現項目六ATM機自動報警系統(tǒng)模擬了ATM機終端用戶在發(fā)生突發(fā)事件后通過“報警”按鈕向監(jiān)控服務端發(fā)送信息后,服務端通過接收信息進行相應處理的系統(tǒng)解決方案。在項目中,ATM終端用戶主要模擬“報警”、“撤消報警”兩個操作,服務器端主要包括模擬“出警”、“撤消警告”兩個操作。計算機網絡將現實生活中的不同終端連接到一起,網絡中的計算機可以通過IP地址和端口號進行數據的通信,ATM機自動報警系統(tǒng)是一種點對點的通信方式,C#中的Socket網絡編程基于TCP/IP協(xié)議,為實現C/S結構的網絡通信提供了解決方案。項目引入理解TCP/IP、IP地址、端口、套接字的概念理解C/S網絡編程概念掌握Socket編程方法
學習目標服務器端:首先運行ATM服務器端監(jiān)控程序,運行效果如圖6-1所示:項目描述點擊開始監(jiān)控,服務器對端口進行監(jiān)控,文本框中顯示日志信息,此時“出警”和“銷警”按鈕不可用。如圖6-2所示:當有客戶端點擊“報警”按鈕,文本框顯示“報警信息”,對應的標簽顯示為“紅色”,同時“出警”和“銷警”按鈕恢復為可用狀態(tài),效果如圖6-3所示:項目描述點擊“出警”按鈕,文本框顯示“出警信息”,對應的標簽顯示為“藍色”,效果如圖6-4所示:點擊“銷警”按鈕,文本框顯示“銷警信息”,對應的標簽顯示為“灰色”,效果如圖6-5所示:項目描述客戶端:客戶端運行后,自動連接服務器端,主界面效果如圖6-6所示:點擊“報警”按鈕,標簽變?yōu)椤凹t色”,文本框顯示“報警”日志信息,效果如圖6-7所示:項目描述如果收到服務器端“出警”信息,標簽變?yōu)椤八{色”,文本框顯示“出警”日志信息,效果如圖6-8所示:點擊“銷警”按鈕,文本框顯示“請求銷警”日志信息,效果如圖6-9所示:項目描述如果收到服務器端“銷警”信息,標簽變?yōu)椤盎疑?,文本框顯示“銷警”日志信息,效果如圖6-10所示:任務1:服務器端功能實現任務2:客戶端功能實現工作任務任務描述服務器端創(chuàng)建連接后,要實現客戶端的信息監(jiān)控,當客戶端發(fā)送“報警”信息后,服務器端接收到信息要進行相應的“出警”處理,當客戶端請求“撤消報警”后,服務器端接收到信息后要進行相應的“撤消警告”處理。任務1服務器端功能實現1.IP地址
Internet通過網絡將計算機連接在一起,每一臺計算機都有自己的一個地址,信息在網絡中傳輸遵循網絡傳輸協(xié)議TCP/IP協(xié)議,按照TCP/IP協(xié)議,IP地址由一組二進制數組成,IP地址包括IPV4和IPV6,分別由32位和64位二進制數組成,目前使用較多的為IPV4地址,為方便使用,IP地址經常使用十進制數來描述,每8位二進制數轉換成一個十進制數,中間用“.”分隔。如:26。C#中System.Net命名空間為網絡編程提供支持類,System.Net.Sockets命名空間為Socket編程提供支持類。
IPAddress類
功能:提供主機的IP地址及相關信息。
IPHostEntry類
功能:提供主機的IP地址、主機名及別名。主要屬性:AddressList:返回IPAddress[],獲取或設置與主機關聯(lián)的IP地址列表。HostName:返回string[],獲取或設置主機的DNS名稱。知識引入任務1服務器端功能實現1.IP地址
IPEndPoint類功能:將網絡端點表示為IP地址和端口號。通過IP地址和端口號的組合,構造主機的連接點。主要屬性:Address:獲取或設置終結點IP地址。AddressFamily:獲取網絡協(xié)議(IP)地址族。AddressFamily.InterNetwork表示此IP為IPv4,AddressFamily.InterNetworkV6表示此地址為IPv6類型。Port:獲取或設置終結點的端口號。Dns類功能:提供簡單的域名解析功能。主要屬性:GetHostName:獲取本地計算機的主機名。GetHostAddresses:返回指定主機的Internet協(xié)議(IP)地址。GetHostEntry:將主機名或IP地址解析為IPHostEntry實例。知識引入任務1服務器端功能實現1.IP地址
【例6-1】輸出本機IP地址及主機名。新建控制臺項目IPGet,編寫代碼如下:namespaceIPGet{classProgram{staticvoidMain(string[]args){stringhostName=Dns.GetHostName();IPHostEntrylocalhost=Dns.GetHostEntry(hostName);stringip="";for(inti=0;i<localhost.AddressList.Length;i++){if(localhost.AddressList[i].AddressFamily==AddressFamily.InterNetwork){ip=localhost.AddressList[i].ToString();}}Console.WriteLine("hostName:"+hostName);Console.WriteLine("localIp:"+ip);}}}知識引入任務1服務器端功能實現2.端口
知識引入任務1服務器端功能實現
在網絡連接中,端口分為物理端口和邏輯端口,物理端口指計算機硬件的I/O端口,邏輯端口指邏輯意義上用于區(qū)分服務的端口,如TCP/IP協(xié)議中的服務端口,端口號的范圍從0到65535。每一個網絡連接都需要一個端口號,一般來說,每個端口都對應著一種應用程序。要建立客戶機與服務器之間的連接通信,必須選擇一個端口進行連接,端口號0-1023是標準的Internet協(xié)議保留端口,用戶創(chuàng)建程序自定義端口號范圍一般為8000-16000。
3.Socket套接字
知識引入任務1服務器端功能實現Socket是基于TCP/IP的編程接口,是種網絡通信機制,socket的英文原義是“孔”或“插座”。作為進程通信機制,通常也稱作“套接字”,用于描述IP地址和端口。Socket是基于連接的通信,在通信開始前通信雙方通過確定身份(IP地址和端口)建立連接通道,然后通過連接通道傳送信息。通信結束后關閉連接。Socket類構造方法:publicSocket(AddressFamilyaddressFamily,SocketTypesocketType,ProtocolTypeprotocolType)addressFamily:指定Socket使用的尋址方案socketType:指定Socket的類型protocolType:指定Socket使用的協(xié)議例:SocketSocketWatch=newSocket(AddressFamily.InterNetwork,SocketType.Stream,ProtocolType.Tcp);實例方法:Socket.Send:從數據中的指示位置開始將數據發(fā)送到連接的SocketSocket.Receive:將數據從連接的Socket接收到接收緩沖區(qū)的特定位置Socket.Bind:使Socket與一個本地終結點相關聯(lián)Socket.Listen:將Socket置于偵聽狀態(tài)Socket.Accept:創(chuàng)建新的Socket以處理傳入的連接請求Socket.Close:強制Socket連接關閉
4Socket網絡編程服務器端編程步驟
知識引入任務1服務器端功能實現(1)創(chuàng)建用于監(jiān)聽連接的Socket對象(2)用指定的端口號和服務器的ip建立一個EndPoint對象(3)Bind()方法綁定EndPoint(4)Listen()方法開始監(jiān)聽(5)有客戶端連接,Accept()方法創(chuàng)建一個新的用于和客戶端進行通信的socket實例(6)通信(7)通信結束關閉socket。
【例6-2】編寫服務端程序,建立指定端口的連接,監(jiān)聽連接的客戶端發(fā)送的信息。程序主界面如圖所示:知識引入任務1服務器端功能實現【例6-2】新建windows窗體應用程序,添加控件并設置屬性如表所示:知識引入任務1服務器端功能實現控件屬性值Form1TextSocket服務器Form1Size600,400Lable1Text服務器端口TextBox1Text5678TextBox1NametxtPortButton1Text開始監(jiān)聽Button1NamebtnStartTextBox2NametxtLogTextBox2MultilinetrueTextBox3NametxtMsgTextBox3MultilinetrueButton2Text發(fā)送信息Button2NamebtnSend【例6-2】編寫窗口事件代碼知識引入任務1服務器端功能實現privatevoidbtnStart_Click(objectsender,EventArgse){try{SocketSocketWatch=newSocket(AddressFamily.InterNetwork,SocketType.Stream,ProtocolType.Tcp);IPAddressip=IPAddress.Any;IPEndPointpoint=newIPEndPoint(ip,Convert.ToInt32(txtPort.Text));SocketWatch.Bind(point);ShowMsg("監(jiān)聽成功!"+":"+GetCurrentTime());SocketWatch.Listen(10);ThreadTh=newThread(Listen);Th.IsBackground=true;Th.Start(SocketWatch);}
catch(Exception){ MessageBox.Show("連接失??!");}}SocketsocketSend;voidListen(objectobj){SocketSocketWatch=objasSocket;while(true){//等待客戶端連接,并創(chuàng)建一個負責通訊的SocketsocketSend=SocketWatch.Accept();ShowMsg(socketSend.RemoteEndPoint.ToString()+"---連接成功!"+":"+GetCurrentTime());ThreadThRecive=newThread(Recive);ThRecive.IsBackground=true;ThRecive.Start(socketSend);}}【例6-2】編寫窗口事件代碼知識引入任務1服務器端功能實現//不斷調用接收消息的方法voidRecive(objectobj){SocketSocketSend=objasSocket;while(true){try{//創(chuàng)建一個數組儲存客戶端發(fā)過來的消息byte[]buffer=newbyte[1024*1024*2];//實際收到的有效字節(jié)數intr=SocketSend.Receive(buffer);stringstr=Encoding.UTF8.GetString(buffer,0,r);//將buffer轉化成字符串形式if(r==0){break;
}ShowMsg(SocketSend.RemoteEndPoint.ToString()+"---"+str+":"+GetCurrentTime());}catch(Exception){MessageBox.Show("連接失?。?);}}}//文本框追加方法voidShowMsg(stringstr){this.txtLog.AppendText(str+"\r\n");}privatevoidForm1_Load(objectsender,EventArgse){//取消對線程間的錯誤檢查Control.CheckForIllegalCrossThreadCalls=false;}privatevoidbtnSend_Click(objectsender,EventArgse){stringstr=this.txtMsg.Text.Trim();byte[]buffer=System.Text.Encoding.UTF8.GetBytes(str);socketSend.Send(buffer);}//獲取當前系統(tǒng)時間的方法
staticDateTimeGetCurrentTime(){DateTimecurrentTime=newDateTime();currentTime=DateTime.Now;returncurrentTime;}任務1
服務器端功能實現任務實現新建windows窗體應用程序,程序主界面如圖所示:任務1
服務器端功能實現任務實現編寫窗口事件代碼操作演示Socket網絡編程需要引用命名空間System.Net.Sockets、System.Net。先運行服務器端程序進入監(jiān)控,后運行客戶端程序。在Form_Load事件中設置Control.CheckForIllegalCrossThreadCalls=false;取消對線程間的錯誤檢查。任務1
服務器端功能實現任務小結任務描述進入系統(tǒng)后要求輸入用戶名及密碼,用戶名為“admin”和密碼為“123456”,如果用戶名或密碼輸入錯誤,則輸出錯誤提示信息并累計錯誤次數,如果錯誤次數達到三次,系統(tǒng)提示“用戶名或密碼輸入錯誤已達三次!系統(tǒng)將自動退出!”,系統(tǒng)自動退出,如果用戶名及密碼輸入正確,則顯示“歡迎進入聯(lián)通手機充值系統(tǒng)”。任務2
客戶端功能實現1.建立服務器連接Socket.Connect(IPEndPointpoint)方法:創(chuàng)建與指定服務器IP和端口號的連接。2.Socket網絡編程客戶端編程步驟(1)創(chuàng)建用于連接的Socket對象(2)用指定的端口號和服務器的ip建立一個EndPoint對象(3)用socket對象的Connect()方法向服務器發(fā)出連接請求(4)如果連接成功,就用socket對象的Send()方法向服務器發(fā)送信息(5)用socket對象的Receive()方法接受服務器發(fā)來的信息(6)通信結束關閉socket。任務2客戶端功能實現知識引入【例6-3】編寫客戶端程序,與服務器建立指定端口的連接,與服務器端實現信息的發(fā)送的接收。程序主界面如圖所示:任務2客戶端功能實現知識引入【例6-3】編寫窗口事件代碼:任務2客戶端功能實現知識引入SocketsocketSend;privatevoidbtnConnect_Click(objectsender,EventArgse){try{socketSend=newSocket(AddressFamily.InterNetwork,SocketType.Stream,ProtocolType.Tcp);IPAddressip=IPAddress.Parse(txtServer.Text);IPEndPointpoint=newIPEndPoint(ip,Convert.ToInt32(txtPort.Text));//獲得要連接的遠程服務器應用程序的IP地址和端口號socketSend.Connect(point);ShowMsg(socketSend.RemoteEndPoint+"---"+"連接成功!:"+GetCurrentTime());Threadth=newThread(Recive);th.IsBackground=true;th.Start();}catch(Exception){ShowMsg("遠程服務器為打開或網絡未連接!");ShowMsg("連接失??!");}}voidRecive(){try{while(true){byte[]buffer=newbyte[1024*1024*2];//實際接收到的有效字符串intr=socketSend.Receive(buffer);stringstr=Encoding.UTF8.GetString(buffer,0,r);if(r==0){break;}ShowMsg(socketSend.RemoteEndPoint+"---\r\n"+str+":"+GetCurrentTime());}}catch(Exception){MessageBox.Show("連接失敗!");}}【例6-3】編寫窗口事件代碼:任務2客戶端功能實現知識引入voidShowMsg(stringstr){txtLog.AppendText(str+"\r\n");}privatevoidbtnSend_Click(objectsender,EventArgse){try{
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025工廠員工安全培訓考試試題附參考答案(黃金題型)
- 2025年新版車間安全培訓考試試題及下載答案可打印
- 2025工廠車間安全培訓考試試題【含答案】
- 專題 J-17【簡語法-單選題專練】強調句 2025年中考英語講解+練習題匯編(全國)
- 2025融資租賃合同項目融資授權協(xié)議
- 2025家居采購合同模板
- 2025設備租賃協(xié)議合同格式
- 2025標準的小型碎石運輸合同模板
- 2025房屋租賃合同簡易范本全新版
- 2025《合同法》之規(guī)定合同解除情形
- 四川省綿陽市游仙區(qū)富樂實驗中學2023-2024學年七年級下學期期中考試數學試卷(含答案)
- 浙江省杭州市2024年中考英語真題(含答案)
- Mysql 8.0 OCP 1Z0-908 CN-total認證備考題庫(含答案)
- 大眾速騰2009年型電路圖
- 中國書法鑒賞講述課件
- 三人成人心肺復蘇標準流程
- Specialized-English完整版電子教案最全ppt整本書課件全套教學教程(最新)
- 畢業(yè)設計(論文)-人形機器人設計
- 新能源電力設備項目立項報告(模板范本)
- 第六章 納米復合材料
- 《春日》PPT課件
評論
0/150
提交評論