物联网.NET开发(第二版) 课件 项目六 ATM机自动报警系统_第1页
物联网.NET开发(第二版) 课件 项目六 ATM机自动报警系统_第2页
物联网.NET开发(第二版) 课件 项目六 ATM机自动报警系统_第3页
物联网.NET开发(第二版) 课件 项目六 ATM机自动报警系统_第4页
物联网.NET开发(第二版) 课件 项目六 ATM机自动报警系统_第5页
已阅读5页,还剩27页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

ATM机自动报警系统任务1:服务器端功能实现任务2:客户端功能实现项目六ATM机自动报警系统模拟了ATM机终端用户在发生突发事件后通过“报警”按钮向监控服务端发送信息后,服务端通过接收信息进行相应处理的系统解决方案。在项目中,ATM终端用户主要模拟“报警”、“撤消报警”两个操作,服务器端主要包括模拟“出警”、“撤消警告”两个操作。计算机网络将现实生活中的不同终端连接到一起,网络中的计算机可以通过IP地址和端口号进行数据的通信,ATM机自动报警系统是一种点对点的通信方式,C#中的Socket网络编程基于TCP/IP协议,为实现C/S结构的网络通信提供了解决方案。项目引入理解TCP/IP、IP地址、端口、套接字的概念理解C/S网络编程概念掌握Socket编程方法

学习目标服务器端:首先运行ATM服务器端监控程序,运行效果如图6-1所示:项目描述点击开始监控,服务器对端口进行监控,文本框中显示日志信息,此时“出警”和“销警”按钮不可用。如图6-2所示:当有客户端点击“报警”按钮,文本框显示“报警信息”,对应的标签显示为“红色”,同时“出警”和“销警”按钮恢复为可用状态,效果如图6-3所示:项目描述点击“出警”按钮,文本框显示“出警信息”,对应的标签显示为“蓝色”,效果如图6-4所示:点击“销警”按钮,文本框显示“销警信息”,对应的标签显示为“灰色”,效果如图6-5所示:项目描述客户端:客户端运行后,自动连接服务器端,主界面效果如图6-6所示:点击“报警”按钮,标签变为“红色”,文本框显示“报警”日志信息,效果如图6-7所示:项目描述如果收到服务器端“出警”信息,标签变为“蓝色”,文本框显示“出警”日志信息,效果如图6-8所示:点击“销警”按钮,文本框显示“请求销警”日志信息,效果如图6-9所示:项目描述如果收到服务器端“销警”信息,标签变为“灰色”,文本框显示“销警”日志信息,效果如图6-10所示:任务1:服务器端功能实现任务2:客户端功能实现工作任务任务描述服务器端创建连接后,要实现客户端的信息监控,当客户端发送“报警”信息后,服务器端接收到信息要进行相应的“出警”处理,当客户端请求“撤消报警”后,服务器端接收到信息后要进行相应的“撤消警告”处理。任务1服务器端功能实现1.IP地址

Internet通过网络将计算机连接在一起,每一台计算机都有自己的一个地址,信息在网络中传输遵循网络传输协议TCP/IP协议,按照TCP/IP协议,IP地址由一组二进制数组成,IP地址包括IPV4和IPV6,分别由32位和64位二进制数组成,目前使用较多的为IPV4地址,为方便使用,IP地址经常使用十进制数来描述,每8位二进制数转换成一个十进制数,中间用“.”分隔。如:26。C#中System.Net命名空间为网络编程提供支持类,System.Net.Sockets命名空间为Socket编程提供支持类。

IPAddress类

功能:提供主机的IP地址及相关信息。

IPHostEntry类

功能:提供主机的IP地址、主机名及别名。主要属性:AddressList:返回IPAddress[],获取或设置与主机关联的IP地址列表。HostName:返回string[],获取或设置主机的DNS名称。知识引入任务1服务器端功能实现1.IP地址

IPEndPoint类功能:将网络端点表示为IP地址和端口号。通过IP地址和端口号的组合,构造主机的连接点。主要属性:Address:获取或设置终结点IP地址。AddressFamily:获取网络协议(IP)地址族。AddressFamily.InterNetwork表示此IP为IPv4,AddressFamily.InterNetworkV6表示此地址为IPv6类型。Port:获取或设置终结点的端口号。Dns类功能:提供简单的域名解析功能。主要属性:GetHostName:获取本地计算机的主机名。GetHostAddresses:返回指定主机的Internet协议(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端口,逻辑端口指逻辑意义上用于区分服务的端口,如TCP/IP协议中的服务端口,端口号的范围从0到65535。每一个网络连接都需要一个端口号,一般来说,每个端口都对应着一种应用程序。要建立客户机与服务器之间的连接通信,必须选择一个端口进行连接,端口号0-1023是标准的Internet协议保留端口,用户创建程序自定义端口号范围一般为8000-16000。

3.Socket套接字

知识引入任务1服务器端功能实现Socket是基于TCP/IP的编程接口,是种网络通信机制,socket的英文原义是“孔”或“插座”。作为进程通信机制,通常也称作“套接字”,用于描述IP地址和端口。Socket是基于连接的通信,在通信开始前通信双方通过确定身份(IP地址和端口)建立连接通道,然后通过连接通道传送信息。通信结束后关闭连接。Socket类构造方法:publicSocket(AddressFamilyaddressFamily,SocketTypesocketType,ProtocolTypeprotocolType)addressFamily:指定Socket使用的寻址方案socketType:指定Socket的类型protocolType:指定Socket使用的协议例:SocketSocketWatch=newSocket(AddressFamily.InterNetwork,SocketType.Stream,ProtocolType.Tcp);实例方法:Socket.Send:从数据中的指示位置开始将数据发送到连接的SocketSocket.Receive:将数据从连接的Socket接收到接收缓冲区的特定位置Socket.Bind:使Socket与一个本地终结点相关联Socket.Listen:将Socket置于侦听状态Socket.Accept:创建新的Socket以处理传入的连接请求Socket.Close:强制Socket连接关闭

4Socket网络编程服务器端编程步骤

知识引入任务1服务器端功能实现(1)创建用于监听连接的Socket对象(2)用指定的端口号和服务器的ip建立一个EndPoint对象(3)Bind()方法绑定EndPoint(4)Listen()方法开始监听(5)有客户端连接,Accept()方法创建一个新的用于和客户端进行通信的socket实例(6)通信(7)通信结束关闭socket。

【例6-2】编写服务端程序,建立指定端口的连接,监听连接的客户端发送的信息。程序主界面如图所示:知识引入任务1服务器端功能实现【例6-2】新建windows窗体应用程序,添加控件并设置属性如表所示:知识引入任务1服务器端功能实现控件属性值Form1TextSocket服务器Form1Size600,400Lable1Text服务器端口TextBox1Text5678TextBox1NametxtPortButton1Text开始监听Button1NamebtnStartTextBox2NametxtLogTextBox2MultilinetrueTextBox3NametxtMsgTextBox3MultilinetrueButton2Text发送信息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("监听成功!"+":"+GetCurrentTime());SocketWatch.Listen(10);ThreadTh=newThread(Listen);Th.IsBackground=true;Th.Start(SocketWatch);}

catch(Exception){ MessageBox.Show("连接失败!");}}SocketsocketSend;voidListen(objectobj){SocketSocketWatch=objasSocket;while(true){//等待客户端连接,并创建一个负责通讯的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{//创建一个数组储存客户端发过来的消息byte[]buffer=newbyte[1024*1024*2];//实际收到的有效字节数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);}//获取当前系统时间的方法

staticDateTimeGetCurrentTime(){DateTimecurrentTime=newDateTime();currentTime=DateTime.Now;returncurrentTime;}任务1

服务器端功能实现任务实现新建windows窗体应用程序,程序主界面如图所示:任务1

服务器端功能实现任务实现编写窗口事件代码操作演示Socket网络编程需要引用命名空间System.Net.Sockets、System.Net。先运行服务器端程序进入监控,后运行客户端程序。在Form_Load事件中设置Control.CheckForIllegalCrossThreadCalls=false;取消对线程间的错误检查。任务1

服务器端功能实现任务小结任务描述进入系统后要求输入用户名及密码,用户名为“admin”和密码为“123456”,如果用户名或密码输入错误,则输出错误提示信息并累计错误次数,如果错误次数达到三次,系统提示“用户名或密码输入错误已达三次!系统将自动退出!”,系统自动退出,如果用户名及密码输入正确,则显示“欢迎进入联通手机充值系统”。任务2

客户端功能实现1.建立服务器连接Socket.Connect(IPEndPointpoint)方法:创建与指定服务器IP和端口号的连接。2.Socket网络编程客户端编程步骤(1)创建用于连接的Socket对象(2)用指定的端口号和服务器的ip建立一个EndPoint对象(3)用socket对象的Connect()方法向服务器发出连接请求(4)如果连接成功,就用socket对象的Send()方法向服务器发送信息(5)用socket对象的Receive()方法接受服务器发来的信息(6)通信结束关闭socket。任务2客户端功能实现知识引入【例6-3】编写客户端程序,与服务器建立指定端口的连接,与服务器端实现信息的发送的接收。程序主界面如图所示:任务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. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论