Tcp/ip实验准备:一个简单的定时器——boost实现
tcp/ip实验须要在指定的时间查看结果,为了实验方便,做了一个定时器。用法是:
在命令行输入:timer
输入数字之后,计时对应秒数
输入m数字之后。计时对应分钟数(支持小数分钟数)
输入q退出。
时间到了之后会有3声蜂鸣,并显示Time is up!
OK,显示一个进度条会好用一些。
程序例如以下:
timer.cpp:
//g++ timer.cpp -o timer.exe -lboost_thread-mgw48-mt-1_56 -lboost_system-mgw48-1_56 -static #include <cstdio>
#include <cstdlib>
#include <cstring>
#include <boost/thread.hpp>
#include <boost/progress.hpp> #ifdef WIN32
#include <fstream>
#include <unistd.h>
#define TEMPNAME "WarningTemp~~~~~~.vbs"
#endif using namespace std;
#define MAXLEN 100 int main()
{
printf("This is a simple timer.\n"
"Input sDigits to time the seconds you want.\n"
"Input mDigits to time the minutes you want.\n"
"For example input s9 to time 9 seconds and\n"
"input m1.5 to time 1 minutes and 30 seconds.\n"
"input q to quit.\n"); char op;
int seconds;
double minutes;
char beep = 7;
char line[MAXLEN];
int i; #ifdef WIN32
ofstream out;
out.open(TEMPNAME);
out << "MsgBox \"Time Is Up!\"";
out.close();
#endif for (;;)
{
start:
printf(">> ");
for (i = 0;
(op = getchar()) != '\n' && i < MAXLEN - 1;
++i)
line[i] = op;
line[i] = 0;
seconds = 0; for (i = 0;
line[i] != 0 && i < MAXLEN;
++i)
{
op = line[i]; if (op == 'q')
goto EndOfFile;
if (op == 'm')
{
sscanf(line + (++i), "%lf", &minutes);
seconds += (int)(minutes * 60);
while (isdigit(line[i])
|| line[i] == '.'
|| isblank(line[i]))
i++;
--i;
} else if (op == 's')
{
sscanf(line + (++i), "%lf", &minutes);
seconds += minutes;
while (isdigit(line[i])
|| isblank(line[i]))
i++;
--i;
} else if (op == ' ' || op == '\t')
{
continue;
} else {
printf("Lexical Error!!\n");
goto start;
}
}
boost::progress_display prog(seconds); for (i = 0; i < seconds; ++i)
{
boost::this_thread::sleep
(boost::posix_time::seconds(1));
++prog;
} for (i = 0; i < 3; ++i)
cout << beep;
cout << "Time is up!!!\n" << endl;
#ifdef WIN32
system("wscript " TEMPNAME);
#else
system("gdialog --msgbox \"Time Is Up!\"");
#endif
}
EndOfFile:
#ifdef WIN32
system("del /s " TEMPNAME);
#endif return 0;
}
Tcp/ip实验准备:一个简单的定时器——boost实现的更多相关文章
- TCP/IP模型的一个简单解释
TCP/IP模型是互联网的基础. 想要理解互联网,就必须理解这个模型.但是,它不好懂,我就从来没有搞懂过. 前几天,BetterExplained上有一篇文章,很通俗地解释了这个模型.我读后有一种恍然 ...
- 实验---反汇编一个简单的C程序(杨光)
反汇编一个简单的C程序 攥写人:杨光 学号:20135233 ( *原创作品转载请注明出处*) ( 学习课程:<Linux内核分析>MOOC课程http://mooc.study.163 ...
- [Java定时器]用Spring Task实现一个简单的定时器.
今天做一个项目的的时候需要用到定时器功能.具体需求是: 每个月一号触发一次某个类中的方法去拉取别人的接口获取上一个月份车险过期的用户.如若转载请附上原文链接:http://www.cnblogs.co ...
- 一个简单的定时器(NSTimer)的封装
在项目开发中我们有的时候需要用到计时器,比如登录超时,scrollview的滚动等,那么就让我们自己手动的去创建一个类库吧. 1 首先你需要一个向外提供创建的便捷方法. 1.1 这里考虑两种情况,一种 ...
- 使用Windows service创建一个简单的定时器
一.需求 我们有时候可能会想要做一些定时任务,例如每隔一段时间去访问某个网站,或者下载一些东西到我们服务器上等等之类的事情,这时候windows service 是一个不错的选择. 二.实现 1.打开 ...
- 用Java socket (TCP通信模型)实现一个简单的web 服务器
package cn.magicdu.think.socket; import java.io.OutputStream; import java.io.PrintWriter; import jav ...
- C语言中利用clock设计一个简单的定时器
time.h是C/C++中的日期和时间头文件,用于需要时间方面的函数,定义了四个变量类型.两个宏和各种操作日期和时间的函数. 其中计时函数是clock(),而与其相关的数据类型是clock_t.clo ...
- OSI七层模型详解 TCP/IP协议
总结 OSI中的层 功能 TCP/IP协议族 应用层 文件传输,电子邮件,文件服务,虚拟终端 TFTP,HTTP,SNMP,FTP,SMTP,DNS,Telnet 等等 表示层 数据格式化,代码转 ...
- TCP/IP协议学习笔记
计算机网络基础知识复习汇总:计算机网络基础知识复习 HTTP协议的解析:剖析 HTTP 协议 一个系列的解析文章: TCP/IP详解学习笔记(1)-- 概述 TCP/IP详解学习笔记(2)-- 数据链 ...
随机推荐
- python多线程的使用
最近在做爬虫,经常用到多线程.这里总结一下我的多线程的使用习惯,方便取用 1.创建信号量: mutex=threading.Lock() 2.信号锁与释放 mutex.acquire() #临界区 m ...
- hud1700(计算几何——求等边三角形)
题意:圆心在原点,一个坐标(x,y)在圆上,通过这个点画一个三角形在圆内,三角形其顶点都在圆上,要求三角形的周长最大,输出满足这样条件的三角形的另两个坐标..... 思路:有一个公式是把一个向量平移多 ...
- webrtcchatde源代码下载
这个是源代码地址: http://download.csdn.net/detail/duerbin3/5433617 这个demo是国内牛人赵书剑开发的视频聊天室,基于webrtc.io实现. 该项目 ...
- jsonp爬取页面
jsonp Connection conn = Jsoup.connect("http://ip.taobao.com/service/getIpInfo.php?ip=" + i ...
- HttpGet params not being sent httpget.setParams(params)不好使
错误的代码 HttpClient httpclient = new DefaultHttpClient(); HttpUriRequest request = new HttpGet(uri); Ht ...
- SpringMVC HandlerMethodArgumentResolver自定义参数转换器 针对HashMap失效的问题
自定义Spring MVC3的参数映射和返回值映射 + fastjson 自定义Spring MVC3的参数映射和返回值映射 + fastjson首先说一下场景:在一些富客户端Web应用程序中我们会有 ...
- 去掉iPhone、iPad的默认按钮样式
只要在样式里面加一句去掉css去掉iPhone.iPad的默认按钮样式就可以了!~ input[type="button"], input[type="submit&qu ...
- Log4j,Log4j2,logback,slf4j日志学习
日志学习笔记 Log4j Log4j是Apache的一个开放源代码项目,通过使用Log4j,我们可以控制日志信息输送的目的地是控制台.文件.数据库等:我们也可以控制每一条日志的输出格式:通过定义每一条 ...
- javaScript之function定义
背景知识 函数定义 在javaScript中,function的定义有3种: 1.匿名定义 function(){} 2.非匿名定义 fun ...
- 关于Cocos2d-x的瓦片地图
1.cocos2d-x的瓦片地图是用Tiled地图编辑器做的,这个软件开源,免费,一般都是用它制作瓦片地图. 2.瓦片地图是由块层和对象组成的,块层的作用是显示和一些重叠的时候覆盖角色的作用,而对象是 ...