网络编程 | 站长之家 | 网页制作 | 图形图象 | 操作系统 | 冲浪宝典 | 软件教学 | 网络办公 | 邮件系统 | 网络安全 | 认证考试 | 系统进程
Firefox | IE | Maxthon | 迅雷 | 电驴 | BitComet | FlashGet | QQ | QQ空间 | Vista | 输入法 | Ghost | Word | Excel | wps | Powerpoint
asp | .net | php | jsp | Sql | c# | Ajax | xml | Dreamweaver | FrontPages | Javascript | css | photoshop | fireworks | Flash | Cad | Discuz!
当前位置 > 网站建设学院 > 网络编程 > C/C++
Tag:注入,存储过程,分页,安全,优化,xmlhttp,fso,jmail,application,session,防盗链,stream,无组件,组件,md5,乱码,缓存,加密,验证码,算法,cookies,ubb,正则表达式,水印,索引,日志,压缩,base64,url重写,上传,控件,Web.config,JDBC,函数,内存,PDF,迁移,结构,破解,编译,配置,进程,分词,IIS,Apache,Tomcat,phpmyadmin,Gzip,触发器,socket
网络编程:ASP教程,ASP.NET教程,PHP教程,JSP教程,C#教程,数据库,XML教程,Ajax,Java,Perl,Shell,VB教程,Delphi,C/C++教程,软件工程,J2EE/J2ME,移动开发
本月文章推荐
.C/C++中动态链接库的创建和调用.
.C++的iostream标准库介绍(3).
.C语言图形编程(四、图形文本-01).
.通过继承实现不同的CheckBox风格.
.C++语言代码检查工具PC-Lint四步.
.eclipse 下用cdt插件开发c c++程.
.一个时钟程序,可以显示当前时间.
.揭开木马的神秘面纱.
.链表的C语言实现之单链表的插入运.
.1996年9月全国计算机等级考试二级.
.C++语言常见问题解答(1)B.
.罗云彬VxD教程--虚拟设备驱动程序.
.C++学习:在C++中创建持久对象.
.C语言程序应用举例.
.用VC++制作一个简单的局域网消息.
.C++实现三维视图绘制与消隐技术.
.在 C++ 中控制Windows关机.
.链表的c语言实现(九).
.任意形状的窗体.
.谈谈代码风格──谈谈缩进.

Winsock技术在远程监控中的应用

发表日期:2008-3-8


摘要:本文根据Winsock技术及网络通信原理, 利用VC++编程技术,通过网络数据传输在客户端得到实时温度运行图形,实现了对人工气候室温度运行状况的远程监控, 满足了低成本、高效率的实时自动化要求。 1 引言 随着网络技术的不断发展进步,网络对整个社会产生了深远的影响。由此也出现了以网络为基础的监控治理新框架。实现基于网络的设备远程监控,成了目前计算机网络应用领域中的一个热点问题。利用套接字技术,通过Socket实现网络之间的连接和数据交换,实现对设备的远程监控,具有很好的应用前景。 2 人工气候室远程监控系统的特点及实现 2.1通信接口-----套接字的创建 本文所要实现的是对一个小型人工气候室的远程监控,在异地或同一个局域网范围内,可以不必亲临现场就可以观测到人工气候室当前的温度状况和运行中的温度曲线,由于在远端只是需要查询和观察,因此只要处理好现场监控计算机和远端客户机之间的通信和数据传输就可以了。这样不用占用现场计算机的CPU处理时间,从而能节省资源以便做更多的处理现场的工作。 和远端服务器的连接可以分为以下几个过程: (1) 服务进程总是先于客户进程启动,服务进程首先创造套接字。 (2) 将本地地址绑定到所创建的套接字上以使在网络上标识该套接字。 (3) 将套接字置于监听模式并预备接受连接请求。 (4) 客户端创建套接字,调用SOCKET函数,方法同上。 (5) 客户向服务器提出连接请求。 (6) 当请求到来时,被阻塞服务进程的accept()函数如(3)中所述生成一个新的套接字与客户端建立连接,并向客户端返回接收信号。 (7) 一旦客户机的套接字收到来自服务器的接收信号,则表示客户机与服务器的连接已就绪,则可以进行数据传输了。 (8) 关闭套接字。一旦任务完成,就必须关掉连接已释放套接字占用的资源。 创建连接的服务器端和客户端代码简述如下: 服务器端:void CServerView::OnStart ()
{ Started=TRUE;
m_Start.EnableWindow(!Started);
try
{ g_sListen.Create(6802,SOCK_DGRAM,NULL);
g_sListen.Bind(6802,m_IP);//,6802为端口号,m_IP为服务器端IP地址
g_sListen.Listen();
((CServerDoc*)GetDocument())->g_pchatListen=new CChatLsnSock(
(CAnyServerDoc*)GetDocument());
CChatLsnSock* g_pchatListen=((CAnyServerDoc*)GetDocument())->g_pchatListen;
g_pchatListen->Create(9999,SOCK_STREAM);//侦听聊天室连接套接字创建
g_pchatListen->Listen();
GetDlgItem(IDC_RESPONSE)->SetWindowText("开始对客户端服务!");
}
服务端开启后的运行界面如图1所示。
客户端:
void CClientView::OnClientStart()
{m_sockRecv.Create(6801,SOCK_DGRAM,m_ClientIP);//6801为端口号,m_ClientIP为客户端IP
m_sockRecv.Bind(6801,m_ClientIP);
m_timer1=SetTimer(1,1000,NULL);
m_timer2=SetTimer(2,250,NULL);
GetLocalTime(&SysTime);
m_StartTime=SysTime;
m_WavePlay.SetStartTime(SysTime.wYear,SysTime.wMonth,SysTime.wDay,SysTime.wHour,SysTime.wMinute,SysTime.wSecond);//画出曲线初始时间
this->m_CurrentSysTime.SetFocus();
}
Winsock技术在远程监控中的应用(图一)
图1:服务器端开启服务运行界面 2.2网络中的数据传输与监控实现 基于网络的远程控制和测量应用中,一般数据传输采用二进制格式是主丛式,在人工气候室的远程监控系统中,通信双方需要传输的数据流量少,下位机一般是微控制器等嵌入式系统,数据处理能力较慢,通信双方也不必保持紧密联系,因此大多采用UDP协议,基于点对点的方式,双方通信的数据可靠性可以通过定义数据表示格式来保证。另外采用把通过网络传输过来的数据在客户端用曲线的形式重画显示,用了一个本人自做的一个ActiveX控件来显示接收的数据,在数据传输过程中存在的滞后时间很短,可以忽略不计。
在设备运行时,服务器端的状态一直保持开启,测温元件把测量到的温度值传入到控制微机,同时通过网络传到远程客户端,远程连接通过输入服务器端的IP地址,输入指定的用户名和密码,就可以连接上,从而就实现了远程监控。 建立连接后客户端就可以接收发送过来的温度值且用曲线形式显示出来:void CClientView::OnDataReceive()
{
extern CListBox* pmyListBox;
char szTempRecv[20];
CString szIP(m_IP);//得到服务器端的IP
UINT uPort=6802;//指出端口
int iTempRecv=m_sockRecv.ReceiveFrom(szRecv,10,szIP,uPort,0);
szRecv[iRecv]='\0';
m_szRecv=szTempRecv;
m_listBox.AddString((LPCTSTR)m_szRecv);
int nCount=m_listBox.GetCount();
if (nCount > 0)
m_listBox.SetCurSel(nCount-1);
GetLocalTime(&SystemTime);
m_NowTime=SystemTime;
CString strSysTime;
strSysTime.Format(_T("%d-%d-%d %d:%d:%d"),SystemTime.wYear,SystemTime.wMonth,SystemTime.wDay,SystemTime.wHour,SystemTime.wMinute,SystemTime.wSecond);
UpdateData(FALSE);
CurABSTime=(m_NowTime-m_StartTime).GetTotalSeconds();
m_WavePlay.SetPoint2(CurABSTime,atoi(m_szRecv));//用自做ActiveX控件画出温度曲线
完成后通过远程登录看到的运行界面如图2所示。
3:结束语 在实际应用中,程序还有聊天功能、查看远程屏幕功能、文件的上传和下载功能,从而更方便与远端进行通信。另外在连接时采用密码和用户名印证方法,从而使监控更加有力,并防止不法用户登录和篡改数据。本论文人工气候室是与韶关医疗器械厂合作的用于生物培养的项目,目前已经投入使用并在区内通过局域网实现了对设备的监控。
Winsock技术在远程监控中的应用(图二)
图2 当前服务器端人工气候室温度运行情况
上一篇:TQuery的参数设置 人气:446
下一篇:TC 中的汉字技术 人气:493
浏览全部C/C++的内容 Dreamweaver插件下载 网页广告代码 祝你圣诞节快乐 2009年新年快乐