本文目录一览:
- 1、linux下怎样用c语言做实时监控目录中文件数量变化的程序
- 2、C语言控制台程序实时监听键盘按键事件
- 3、如何用C语言监视一文件,(可以隔一定时间检测该文件),当文件相比较上一时间有改动时,读出改动处
- 4、C语言 监听的问题
linux下怎样用c语言做实时监控目录中文件数量变化的程序
有一个头文件叫inotify.h ,这是linux 内核中的一个特性,可以用来监控目录
C语言控制台程序实时监听键盘按键事件
输入焦点不在控制台窗口上, 键盘消息不会被控制台窗口接收, 这种情况只有用全局键盘钩子或低级键盘钩子, 全局钩子要写在动态链接库中(DLL文件), 低级键盘钩子可写在本线程中.
如何用C语言监视一文件,(可以隔一定时间检测该文件),当文件相比较上一时间有改动时,读出改动处
、“网络监视器”的基本使用
欲打开“网络监视器”,只需依次选择“开始→程序→附件→系统工具→网络监视器”即可进入其主窗口。
对于“网络监视器”中的功能,既可以选择菜单中的相应项目,也可以通过直接单击工具栏上的相应按钮来实现。在其主窗口工具栏上的按钮,从左到右作用依次为:
1.选择服务器:通过它可对其他计算机的“网络监视器”进行远程管理。具体的使用方法请参见后文相关内容。
2.断开用户连接:通过它可强行中断列表中指定用户对本机的连接。
3.关闭文件:通过它可强行关闭列表中指定用户所打开的指定共享文件。
4.添加共享:通过它可根据提示直接添加本机的共享资源,并为它设置相应权限。
5.停止共享:通过它可停止列表中指定资源的共享。
6.显示用户:这相当于选“查看”菜单中的“按连接”项,它是“网络监视器”主窗口的默认状态,也是最常用的窗口。此处可以查看到已连接到本机的客户机的用户名、计算机名、打开了些什么共享资源、打开些什么文件以及连接的时间和空闲的时间等资料。当客户机断开连接之后它就会自动从此列表中消失。
7.显示共享的文件夹:这相当于选“查看”菜单中的“按共享的文件夹”项。它可以查看本机已共享的资源及其共享名和权限;可添加共享,停止共享,修改共享等。
8、显示文件:这相关于选“查看”菜单中的“按打开的文件”项。它可以查看已打开的本服务器文件;可关闭文件等。
三、“网络监视器”的远程监视
本文上面部分已经讲过“网络监视器”在本地计算机上的基本使用方法,但实际上在一定条件满足的情况下,它也可以对局域网内的其他计算机进行完全相同的远程管理。请进行如下的操作:
1.启用远程管理
在远程计算机上,先进入其“控制面板→密码→远程管理”窗口,再勾选中“启用此服务器的远程管理”,接着在相应位置输入密码后按“确定”按钮保存退出。
2.使用远程管理
在本地计算机上,先进入“网络监视器”的主窗口,再选“管理员”菜单中的“选择服务器”项,在“请输入要进行管理的服务器名”的提示窗口中的“名称”处输入远程计算机的名字(比如为zhuyan),然后按“确定”按钮继续;系统接着会提示“必须提供密码才能连接”,则请在“密码”后输入“启用远程管理”一步中所设的密码值,最后按“确定”按钮即可得到新的“网络监视器”的窗口,里面当然是远程计算机的共享内容了,你所要做的,就是进行正常操作就可以啦!
注意:
1.如果在“使用远程管理”操作中,当进行到输入密码一步勾选中了“请将密码保存到密码列表”项,则当你以后再连接到远程计算机时就不用输入密码了。
2.如果要想修改共享文件夹名或其权限设置,则需要在“显示共享的文件夹”窗口中,先在列表中选中该用户,然后按键盘上的ALT+ENTER键(或者选“管理员”菜单中的“共享文件夹的属性”项),再根据提示进行操作即可。
C语言 监听的问题
#include iostream
#include stdlib.h
#include winsock2.h
#pragma comment(lib, "ws2_32.lib")
using namespace std;
//头文件包含
int main()
{ int recvbytes;
char temp[100];
char a[100]; //一些变量的声明
WORD wVersionRequested;
WSADATA wsaData;
SOCKET sock_id, client_id; //定义两个套接字
struct sockaddr_in serv_addr, remote_addr; //定义两个结构
wVersionRequested = MAKEWORD(2, 0); //这个是固定用法 版本
if (0 != WSAStartup(wVersionRequested, wsaData)) //此处初始化socke库
{
cout "加载Winsock库出错!" endl;
exit(1);
}
if (-1 == (sock_id = socket(AF_INET, SOCK_STREAM, 0))) //建立一个类型为TCP的套接字
{
cout "创建套接字出错!" endl;
exit(1);
}
//填充结构体内容
serv_addr.sin_family = AF_INET; //固定
serv_addr.sin_port = htons(800); //端口
serv_addr.sin_addr.S_un.S_addr = inet_addr("127.0.0.1"); //ip
memset((serv_addr.sin_zero), 0, sizeof(serv_addr.sin_zero));//其他填充为零
//绑定到套接字描述符
if (SOCKET_ERROR == bind(sock_id, (struct sockaddr *)serv_addr, sizeof(struct sockaddr)))
{
cout "1出错!" endl;
exit(1);
}
//开始监听
if (SOCKET_ERROR == listen(sock_id, 5))
{
cout "2出错!" endl;
exit(1);
}
//如果来了一个连接请求 处理输入后发送给对方 输入的东东
int sin_size = sizeof(struct sockaddr_in);
if (SOCKET_ERROR == (client_id = accept(sock_id, (struct sockaddr *)remote_addr, sin_size)))
{
cout "3出错!" endl;
exit(1);
}
cout"连接到一个客户端!!!请发送消息给他!!!"endl;
cout"请输入要发送的消息!!!"endl;
while(1)
{ cina;
send(client_id, a, strlen(a), 0); //把输入的东东发送出去
if (ERROR_SUCCESS == (recvbytes = recv(client_id, temp, 100, 0))) //接收数据到temp缓冲区
{
cout "接受数据出错!" endl;
exit(1);
}
temp[recvbytes] = '\0';
cout temp endl;
if(temp[0]!='8')
continue;
else
break;
}
closesocket(client_id); //关闭套接字
closesocket(sock_id); //关闭套接字
WSACleanup(); //清理套接字库等收尾工作
system("pause"); //暂停
return 0;
}