c监控指定ip服务器消息
Ⅰ c语言监控文件是否被更改并检测出修改人的IP及其修改内容
改ip是解觉不了,因为监控软件设置了IP比如从192.168.0.1到255,你再改也没用,要解决就下载反网管软件
Ⅱ c语言如何实现对浏览器所访问网站的监控。
使用API寻找顶级窗口和寻找子窗口,用递归的方式列举出指定窗口下所有的窗口句柄,然后使用API读取窗口标题判断。
比如网络,通过窗口标题 网络一下,你就知道 来判断。如果非要匹配地址栏我就不会了
理论上也可以用取窗口标题的方式,但是就拿遨游浏览器来说,其地址栏的窗口句柄根本读取不到,更无法读取标题
另外,监控IP地址也可以试试看。不过浏览器一般都不能正常截包...具体上没研究,也可以试试。
比如说监控电脑全局的网络连接,如果发现像网络首页的IP发送封包就说明登陆了网络网站
不过这个估计比找窗口句柄然后判断标题还难实现... 话说楼主了解这个干嘛?
Ⅲ 怎样监测一个windows服务器
Windows服务器的监控方式有三种,分别为Agent监测方式、SNMP监测方式和WMI监测方式,下面分别对每一种监测方式进行介绍:
Agent监测方式
使用Agent方式来采集数据,首先需要在被监测服务器上安装Windows Agent代理程序,安装过程请参考安装Agent代理。
1、登录CreCloud云网管平台后,点击系统右上方的【监测】按钮,再点击左下方的【设备管理】。右键点击【设备管理】树下的【设备列表】,弹出菜单。
(也可在设备列表的空白处【图标视图】和【详细信息】中右键选择【增加管理对象】或在快速工具栏中点击【增加管理对象】,下同)
2、选择【增加管理对象】,弹出【添加管理对象】对话框,在【全部设备】下看到“AgentWindows”。
选中上图中的【AgentWindows】,点击【确定】,弹出【AgentWindows】对话框,如下图所示(也可左键双击【AgentWindows】弹出下面对话框)。
3、在“基本设置”栏下进行设置:
Windows服务器地址:输入被监测的服务器的IP地址
Agent端口号:Agent端口,默认为2198
标题:填写显示的标题,可以自己定义
是否禁止:禁止则不进行监测
监测服务器:默认即可
4、在“高级设置”栏可以对该管理对象进行详细描述以及设置依靠条件,如下图:
依靠:从下拉列表中选择要依靠的监测点,可以设置多个监测点依靠。
描述:填写对该设备的简单描述,可以不填写。
5、“基本设置”和“高级设置”填写完毕,点击【确定】即可,弹出显示正在获取管理对象属性提示框。如果获取正常,就会弹出【配置监测点】对话框。
勾选要监测的选项后,点击右边的【确定】即可,Agent监测方式添加完成。添加完成后,在【设备管理】的树下和设备列表的图标视图中都会有添加的设备显示。
SNMP监测方式
注意:如果采用SNMP方式监控,请检查远程机器的SNMP协议是否打开 。
1、登录CreCloud云网管平台后,点击系统右上方的【监测】按钮。
再点击左下方的【设备管理】,如下图所示:
2、右键点击【设备管理】树下的【设备列表】,弹出菜单,如下图所示:
3、选择【增加管理对象】,弹出【添加管理对象】对话框,在【全部设备】下选择设备类型为“SNMP Windows”,点击【确定】,如下图所示:
4、选择“SNMP Windows”,点击【确定】后,弹出如下图所示对话框:
5、“基本设置”选项卡:
Windows服务器IP:填写被监测服务器的IP地址
SNMP端口号:填写SNMP的端口号
可读共同体名称:填写SNMP的可读共同体名称
标题:填写显示的标题
监测服务器:默认即可
6、“高级设置”选项卡:
该选项卡中的设置和Agent中的设置相同。
点击【确定】后,SNMP Windows的监测方式添加完成。添加完成后在设备管理中设备列表下和右侧【设备列表】的图标视图中都会有该设备。
WMI监测方式
注意:如果用WMI方式,需要安装WMI和服务
1、用WMI方式监测,需要将CreCloud Task Server 服务改为用管理员用户启动。
CreCloud Task Server 服务右键“属性”,选择“登录”选项卡
登录帐户选择“此帐户”,点击“浏览”按钮,弹出“选择用户”窗口
点击“高级”按钮后,点击“一般性查询”右侧的“立即查找”按钮,在下方查询结果中选择“Administartor”用户后确定
返回到属性窗口,点击确认,并重启CreCloud Task Server服务
2、登录CreCloud云网管平台后,点击系统右上方的【监测】按钮。
再点击左下方的【设备管理】,如下图所示:
3、右键点击【设备管理】树下的【设备列表】,弹出菜单,如下图所示:
4、选择【增加管理对象】,弹出【添加管理对象】对话框,在【全部设备】下选择设备类型为“WMI Windows”,点击【确定】,如下图所示:
点击【确定】后,弹出如下图对话框:
5、“基本设置”选项卡
Windows服务器IP:填写被监测的服务器的IP地址
登录名:填写被监测的服务器的系统管理员名称
Ⅳ 远程监控的原理和实现如何用c语言实现
以人工气候室远程监控系统为例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<br>m_sockRecv.Bind(6801,m_ClientIP);<br>m_timer1=SetTimer(1,1000,NULL);<br>m_timer2=SetTimer(2,250,NULL);<br>GetLocalTime(&SysTime);<br>m_StartTime=SysTime;<br>m_WavePlay.SetStartTime(SysTime.wYear,SysTime.wMonth,SysTime.wDay,SysTime.wHour,SysTime.wMinute,SysTime.wSecond);//画出曲线初始时间<br>this->m_CurrentSysTime.SetFocus();<br>}
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控件画出温度曲线
完成后通过远程登录看到的运行界面
Ⅳ 如何用C语言实现向某个IP发送数据包(例如4个浮点数)
使用socket编程即可。
1、网络的Socket数据传输是一种特殊的I/O,Socket也是一种文件描述符。Socket也具有一个类似于打开文件的函数调用Socket(),该函数返回一个整型的Socket描述符,随后的连接建立、数据传输等操作都是通过该Socket实现的。
2、下面用Socket实现一个windows下的c语言socket通信例子,这里客户端传递一个字符串,服务器端进行接收。
【服务器端】
#include "stdafx.h"
#include <stdio.h>
#include <winsock2.h>
#include <winsock2.h>
#define SERVER_PORT 5208 //侦听端口
void main()
{
WORD wVersionRequested;
WSADATA wsaData;
int ret, nLeft, length;
SOCKET sListen, sServer; //侦听套接字,连接套接字
struct sockaddr_in saServer, saClient; //地址信息
char *ptr;//用于遍历信息的指针
//WinSock初始化
wVersionRequested=MAKEWORD(2, 2); //希望使用的WinSock DLL 的版本
ret=WSAStartup(wVersionRequested, &wsaData);
if(ret!=0)
{
printf("WSAStartup() failed!\n");
return;
}
//创建Socket,使用TCP协议
sListen=socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);
if (sListen == INVALID_SOCKET)
{
WSACleanup();
printf("socket() faild!\n");
return;
}
//构建本地地址信息
saServer.sin_family = AF_INET; //地址家族
saServer.sin_port = htons(SERVER_PORT); //注意转化为网络字节序
saServer.sin_addr.S_un.S_addr = htonl(INADDR_ANY); //使用INADDR_ANY 指示任意地址
//绑定
ret = bind(sListen, (struct sockaddr *)&saServer, sizeof(saServer));
if (ret == SOCKET_ERROR)
{
printf("bind() faild! code:%d\n", WSAGetLastError());
closesocket(sListen); //关闭套接字
WSACleanup();
return;
}
//侦听连接请求
ret = listen(sListen, 5);
if (ret == SOCKET_ERROR)
{
printf("listen() faild! code:%d\n", WSAGetLastError());
closesocket(sListen); //关闭套接字
return;
}
printf("Waiting for client connecting!\n");
printf("Tips: Ctrl+c to quit!\n");
//阻塞等待接受客户端连接
while(1)//循环监听客户端,永远不停止,所以,在本项目中,我们没有心跳包。
{
length = sizeof(saClient);
sServer = accept(sListen, (struct sockaddr *)&saClient, &length);
if (sServer == INVALID_SOCKET)
{
printf("accept() faild! code:%d\n", WSAGetLastError());
closesocket(sListen); //关闭套接字
WSACleanup();
return;
}
char receiveMessage[5000];
nLeft = sizeof(receiveMessage);
ptr = (char *)&receiveMessage;
while(nLeft>0)
{
//接收数据
ret = recv(sServer, ptr, 5000, 0);
if (ret == SOCKET_ERROR)
{
printf("recv() failed!\n");
return;
}
if (ret == 0) //客户端已经关闭连接
{
printf("Client has closed the connection\n");
break;
}
nLeft -= ret;
ptr += ret;
}
printf("receive message:%s\n", receiveMessage);//打印我们接收到的消息。
}
// closesocket(sListen);
// closesocket(sServer);
// WSACleanup();
}
【客户端】
#include "stdafx.h"
#include <stdio.h>
#include <stdlib.h>
#include <winsock2.h>
#define SERVER_PORT 5208 //侦听端口
void main()
{
WORD wVersionRequested;
WSADATA wsaData;
int ret;
SOCKET sClient; //连接套接字
struct sockaddr_in saServer; //地址信息
char *ptr;
BOOL fSuccess = TRUE;
//WinSock初始化
wVersionRequested = MAKEWORD(2, 2); //希望使用的WinSock DLL的版本
ret = WSAStartup(wVersionRequested, &wsaData);
if(ret!=0)
{
printf("WSAStartup() failed!\n");
return;
}
//确认WinSock DLL支持版本2.2
if(LOBYTE(wsaData.wVersion)!=2 || HIBYTE(wsaData.wVersion)!=2)
{
WSACleanup();
printf("Invalid WinSock version!\n");
return;
}
//创建Socket,使用TCP协议
sClient = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);
if (sClient == INVALID_SOCKET)
{
WSACleanup();
printf("socket() failed!\n");
return;
}
//构建服务器地址信息
saServer.sin_family = AF_INET; //地址家族
saServer.sin_port = htons(SERVER_PORT); //注意转化为网络节序
saServer.sin_addr.S_un.S_addr = inet_addr("192.168.1.127");
//连接服务器
ret = connect(sClient, (struct sockaddr *)&saServer, sizeof(saServer));
if (ret == SOCKET_ERROR)
{
printf("connect() failed!\n");
closesocket(sClient); //关闭套接字
WSACleanup();
return;
}
char sendMessage[]="hello this is client message!";
ret = send (sClient, (char *)&sendMessage, sizeof(sendMessage), 0);
if (ret == SOCKET_ERROR)
{
printf("send() failed!\n");
}
else
printf("client info has been sent!");
closesocket(sClient); //关闭套接字
WSACleanup();
}
Ⅵ 追踪服务器IP 命令是什么
Tracert(跟踪路由)是路由跟踪实用程序,用于确定 IP 数据报访问目标所采取的路径。Tracert 命令用 IP 生存时间 (TTL) 字段和 ICMP 错误消息来确定从一个主机到网络上其他主机的路由。
Tracert 工作原理
通过向目标发送不同 IP 生存时间 (TTL) 值的“Internet 控制消息协议 (ICMP)”回应数据包,Tracert 诊断程序确定到目标所采取的路由。要求路径上的每个路由器在转发数据包之前至少将数据包上的 TTL 递减 1。数据包上的 TTL 减为 0 时,路由器应该将“ICMP 已超时”的消息发回源系统。
Tracert 先发送 TTL 为 1 的回应数据包,并在随后的每次发送过程将 TTL 递增 1,直到目标响应或 TTL 达到最大值,从而确定路由。通过检查中间路由器发回的“ICMP 已超时”的消息确定路由。某些路由器不经询问直接丢弃 TTL 过期的数据包,这在 Tracert 实用程序中看不到。
Tracert 命令按顺序打印出返回“ICMP 已超时”消息的路径中的近端路由器接口列表。如果使用 -d 选项,则 Tracert 实用程序不在每个 IP 地址上查询 DNS。
在下例中,数据包必须通过两个路由器(10.0.0.1 和 192.168.0.1)才能到达主机 172.16.0.99。主机的默认网关是 10.0.0.1,192.168.0.0 网络上的路由器的 IP 地址是 192.168.0.1。
C:\>tracert 172.16.0.99 -d
Tracing route to 172.16.0.99 over a maximum of 30 hops
1 2s 3s 2s 10,0.0,1
2 75 ms 83 ms 88 ms 192.168.0.1
3 73 ms 79 ms 93 ms 172.16.0.99
Trace complete.
用 tracert 解决问题
可以使用 tracert 命令确定数据包在网络上的停止位置。下例中,默认网关确定 192.168.10.99 主机没有有效路径。这可能是路由器配置的问题,或者是 192.168.10.0 网络不存在(错误的 IP 地址)。
C:\>tracert 192.168.10.99
Tracing route to 192.168.10.99 over a maximum of 30 hops
1 10.0.0.1 reportsestination net unreachable.
Trace complete.
Tracert 实用程序对于解决大网络问题非常有用,此时可以采取几条路径到达同一个点。
Tracert 命令行选项
Tracert 命令支持多种选项,如下表所示。
tracert [-d] [-h maximum_hops] [-j host-list] [-w timeout] target_name
选项
描述
-d
指定不将 IP 地址解析到主机名称。
-h maximum_hops
指定跃点数以跟踪到称为 target_name 的主机的路由。
-j host-list
指定 Tracert 实用程序数据包所采用路径中的路由器接口列表。
-w timeout
等待 timeout 为每次回复所指定的毫秒数。
target_name
目标主机的名称或 IP 地址。
Ⅶ 怎么用IP地址看网络监控
首先,dvr要求是支持网络发布的。
其次,要看网络结构是什么样的,什么样的接入方式。这里分三种情况:
1、如果dvr外接网线直接是公网ip 那么访问的时候直接填ip地址即可,不过这种直接有公网ip的很难申请,所以一般企业才有这种接入方式。
2、如果接入方式是家庭adsl,众所周知 adsl是拨号的。每次拨号 ip都是变动的,那么每次访问的ip就是变的。申请花生壳是可以的 但是要求有支持花生壳的路由器。在路由器里面设置好花生壳的用户名密码 动态ip就会和你的花生壳申请的域名绑定起来 以后访问的时候用域名即可访问。
Ⅷ 如何查看各地ip到某服务器之间的网络情况
Tracert(跟踪路由)是路由跟踪实用程序,用于确定 IP 数据报访问目标所采取的路径。Tracert 命令用 IP 生存时间 (TTL) 字段和 ICMP 错误消息来确定从一个主机到网络上其他主机的路由。
这个可以有