当前位置:  互联网>综合
本页文章导读:
    ▪C++检测本地网络端口占用      一、解决方法: 1、使用DOS netstat 命令查询所有端口使用情况 2、使用DOS findstr 命令辅助筛选符合要求的进程PID 3、使用DOS tasklist 命令查询PID对应的进程信息 4、使用DOS findstr 命令辅助筛选符合.........
    ▪Yoga支撑PC+,联想引领传统PC突围           近几年,PC行业的发展势头明显不再像前些年那么猛烈,在智能手机和平板电脑的冲击下,PC行业走势变得更加理性和平稳。实际上,传统PC产品并未遭遇某些媒体所宣称的“没落”.........
    ▪sqlite3必知必会      sqlite3 数据库简介 SQLite 数据库,是一个非常轻量级自包含(lightweight and self-contained)的DBMS,它可移植性好,很容易使用,很小,高效而且可靠。 SQLite嵌入到使用它的应用程序中,它们共用相.........

[1]C++检测本地网络端口占用
    来源: 互联网  发布时间: 2013-10-24
一、解决方法: 1、使用DOS netstat 命令查询所有端口使用情况
2、使用DOS findstr 命令辅助筛选符合要求的进程PID
3、使用DOS tasklist 命令查询PID对应的进程信息
4、使用DOS findstr 命令辅助筛选符合要求的进程名
5、在VC中执行DOS命令
WinExec 异步执行。不能等待命令结束,较简单
ShellExecute 麻烦
CreateProcess 麻烦
注:使用任何一种方法,都需要将结果输出到外部,然后再读取结果分析


二、DOS查询端口使用示例 比如要查看8080端口被哪个程序占用了,windows命令行窗口下执行:运行--cmd


C:\>netstat -aon|findstr ":8080 " ,输出
TCP 127.0.0.1:80 0.0.0.0:0 LISTENING 2448


端口被进程号为2448的进程占用,继续执行下面命令:


C:\>tasklist /fi "pid eq 2448" /nh
thread.exe 2016 Console 0 16,064 K


表示thread.exe程序占用了端口8080


三、windows下VC实现代码

#include <windows.h>
#include <string>
using namespace std;

//
//根据端口查询进程名,如果有多个进程,只返回第一个
//
bool GetProcNameByPort(int nPort, string &strResult)
{
	bool bSuc = false;
	char pszPort[16] = {0};
	itoa(nPort, pszPort, 10);
	char pResult[80] = {0};
	const char* pPortFilePath = "c:\\~vtmp";
	const char* pProcessFilePath = "c:\\~vvtmp";
	sprintf(pResult, "cmd /c netstat -ano|findstr \":%d \" > %s",  nPort, pPortFilePath);

	//WinExec 执行cmd命令
	WinExec(pResult, SW_HIDE);
	Sleep(450);

	//查找端口号
	FILE *pPortFile = fopen(pPortFilePath, "r");
	if ( pPortFile )
	{
		while ( !feof(pPortFile) )
		{
			memset(pResult, 0, sizeof(pResult));
			fread(pResult, sizeof(pResult), 1, pPortFile);
			pResult[sizeof(pResult)-1] = 0x00;

			string strPortTmp = pResult;
			int offset = (int)strPortTmp.find_last_of(0x0A);
			if ( offset > -1 )
			{
				pResult[offset] = 0x00;
				strPortTmp = strPortTmp.substr(0, offset);
				if ( !feof(pPortFile) )
				{
					fseek(pPortFile, (long)(strPortTmp.length()+1-sizeof(pResult)), SEEK_CUR);
				}

				offset = (int)strPortTmp.find_first_of(':');
				if ( offset > -1 )
				{
					strPortTmp = strPortTmp.substr(offset+1, 6);
					offset = (int)strPortTmp.find_last_not_of(' ');
					if ( offset > -1 )
					{
						strPortTmp = strPortTmp.substr(0, offset+1);
						if ( strPortTmp == pszPort )
						{
							strPortTmp = pResult;
							offset = (int)strPortTmp.find_last_of(' ');
							if ( offset > -1 )
							{
								strPortTmp = strPortTmp.substr(offset+1);
								sprintf(pResult, "cmd /c tasklist /fi \"pid eq %s\" /nh> %s", strPortTmp.c_str(), pProcessFilePath);
								//根据端口号查找进程ID
								WinExec(pResult, SW_HIDE);
								Sleep(450);

								FILE *pProcessFile = fopen(pProcessFilePath, "r");
								if ( pProcessFile )
								{
									while (!feof(pProcessFile))
									{
										memset(pResult, 0, sizeof(pResult));
										fread(pResult, sizeof(pResult), 1, pProcessFile);
										pResult[sizeof(pResult)-1] = 0x00;

										string strProcessTmp = pResult;
										int offset = (int)strProcessTmp.find_last_of(0x0A);
										if ( offset > -1 )
										{
											pResult[offset] = 0x00;
											strProcessTmp = strProcessTmp.substr(0, offset);
											if ( !feof(pProcessFile) )
											{
												fseek(pProcessFile, (long)(strProcessTmp.length()+1-sizeof(pResult)), SEEK_CUR);
											}

											if ( 0x0A == pResult[0] )		//首行只有一个字符 0x0A
											{
												strProcessTmp = pResult+1;
											}
											else
											{
												strProcessTmp = pResult;
											}
											offset = (int)strProcessTmp.find_first_of(' ');
											if ( offset > -1 )
											{
												{
													{
														{
															{
																strProcessTmp = strProcessTmp.substr(0, offset);
																if ( "" != strProcessTmp )
																{
																	//查找成功,结束
																	strResult += "[" + strProcessTmp + "]";
																	bSuc = true;
																}
																continue;
															}
														}
													}
												}
											}
										}
									}
									fclose(pProcessFile);
								}
								sprintf(pResult, "cmd /c del %s", pProcessFilePath);
								WinExec(pResult, SW_HIDE);
								if(bSuc){ continue; }
							}
						}
					}
				}
			}
		}
		fclose(pPortFile);
	}
	if(!bSuc){ strResult=""; };
	sprintf(pResult, "cmd /c del %s", pPortFilePath);
	WinExec(pResult, SW_HIDE);
	return bSuc;
}

int main()
{
	int count = 100;
	string str = "";

	while(count--)
	{
		str = "";
		GetProcNameByPort(843, str);
		if ( str != "" )
			printf("_%s_\n", str.c_str());
		Sleep(1000);
	}

	printf("____End____");


	getchar();
	return 0;
}

转载请注明来自Master.R(石硕)的CSDN博客:blog.csdn.net/shishuo365  如有疑问请发邮件shishuo365#126.com(将#更换为@)

作者:shishuo365 发表于2013-5-17 11:16:42 原文链接
阅读:0 评论:0 查看评论

    
[2]Yoga支撑PC+,联想引领传统PC突围
    来源: 互联网  发布时间: 2013-10-24

    近几年,PC行业的发展势头明显不再像前些年那么猛烈,在智能手机和平板电脑的冲击下,PC行业走势变得更加理性和平稳。实际上,传统PC产品并未遭遇某些媒体所宣称的“没落”,只不过是被火爆一时的平板等PC+产品抢了风头罢了。

    要探究PC行业的走势变化,就不得不从更深的层次分析。首先,在过去十年中,PC产品已经积累了非常高的市场占有率,相反,平板等新兴产品仍处于布局初期,因此两者并无可比性;其次,欧美经济危机限制了消费者的购买能力,这使得价格更低的PC+产品得以脱颖而出,未来随着经济的回暖,传统PC的销量有望回到更高的水平。

    无论如何,眼下的形势已经令传统PC巨头遭遇了前所未有的挑战,戴尔谋求私有化、宏碁正力图扭亏为盈,这表明大部分PC厂商日子不太好过。不过,也不是没有例外,回顾这些年联想在PC领域的强劲势头,在整个行业可谓是独树一帜,鹤立鸡群,惠誉评级甚至称联想是PC行业的一朵奇葩。之所以能取得这样的成绩,除在产品、营销、服务、品牌方面的固有优势之外,更重要的一点在于,联想能准确把握市场风向标,与时俱进的推出与市场相适应的产品,尤其是平板笔记本Yoga系列的推出,为联想赢得了广泛的市场和机遇。

    致Wintel联盟即将逝去的青春

    众所周知,微软一直是PC操作系统的领导者,去年10月,微软先后发布windows 8和支持ARM架构的Windows RT系统,这两个系统均支持触屏操作,由此可见,连微软自己也不再死守Wintel联盟,曾经风光无限的wintel架构似乎显得摇摇欲坠。.

    在这方面,联想和微软可谓英雄所见略同,因为联想也是最先推出基于Windows 8产品的PC厂商。除了在智能手机、智能电视方面持续发力之外,Yoga系列更堪称传统PC颠覆性创新的典范。

    从联想的策略可以看出,死守Wintel联盟并非明智的选择,对于Yoga系列而言,联想既可以出X86版本也可以出ARM版本,甚至安卓版,但用户体验是其考虑的第一要素,之所以联想会推出基于X86架构的Yoga 11S,也在于用户体验方面的考量,这或许说明,在消费体验决定市场表现的时代,Wintel联盟的青春必将逝去。

    Yoga系列兼具平板和笔记本两种属性,这和Wintel联盟下的传统PC截然不同,从之前上市热卖的Yoga 11来看,消费者对这种趋势无疑是认可的,因为它颠覆了大家对PC的固有认知,无论是设计理念,还是功能配置,都堪称前卫。

    如果说Yoga成功融合了平板和笔记本,那么在PC+的时代,我们还发现其他产品也在走同样的路线,例如三星Galaxy Note,其尺寸介于平板和手机之间,它的意义在于融合平板和智能手机。随着越来越多的跨界融合产品的出现,我们能做的,也许只有致Wintel联盟即将逝去的青春了。

    Yoga 11S:使用场景和用户习惯的改变

    和前辈们一样,联想Yoga 11S也拥有不少过人之处,比如支持触摸、外形上实现360度翻转、轻薄尺寸、X86架构提供高性能等等,伴随着这些优点,Yoga系列产品将带来使用场景和用户习惯的改变。

    首先,Yoga 11S也提供笔记本式、平板电脑式、立式和帐篷式四种模式供消费者选择,能根据消费者的不同需求呈现出不同形态,可以说,Yoga 11S强化了Yoga系列的看家本领。而且,11英寸让Yoga 11S更能迎合两类用户的需求,它比一般平板要大,但比传统PC要小,尺寸适中;四种模式能让用户更随心所欲的使用,无论是在电脑桌、床上,亦或是在帐篷里,都能应付自如。因此,Yoga 11S并不仅仅是一个PC,它更像是一款“变形金刚”式的笔记本,能根据用户需求自由变形,它所倡导的,更是一种基于时尚和前卫的生活理念。

    其次,Yoga 11S在视觉和触控体验上做到了更上一层楼,1600×900像素分辨率让用户拥有更优的视觉享受,不仅显示更清晰,而且在高质量视频播放、游戏画面呈现方面也有声有色,不输于主流的平板,这意味着Yoga 11S具备足够的娱乐气质。触控方面,得益于Windows 8的 Metro界面,Yoga 11S对触控操作支持非常出色,尤其是在使用传统桌面模式时,用户也能对文字、图标进行适度的放大缩小,这打破了平板因屏幕太小而难以进行文字处理的弊端。

    这些性能让Yoga 11S足以傲视群雄,在Windows8的体系下,诞生了诸多有趣的产品,例如索尼Vaio Duo 11,intel Letexo,华硕的TAICHI、戴尔的XPS Duo 12等等,但凭借出色的性能和设计,Yoga 11S显然更胜一筹。

    其三,Yoga 11S凸显了联想对PC+战略的理解,联想在PC行业的地位不言而喻,在联想的推动下,PC+理念也将为更多消费者、更多厂商所了解、所熟悉。通过Yoga 系列产品可以看出,联想不止是在玩儿一个概念,而是用实际产品去支撑PC+战略的实施,相信未来Yoga系列还会不断的发展壮大。

    据悉,联想Yoga 11S已于5月中旬在网上进行销售,我们相信,在Yoga 11S的影响下,越来越多用户会抛弃旧时代的应用体验,转向Yoga所倡导的更时尚更灵活的应用体验。而Yoga系列也将因出色的设计和卓越的性能为PC行业塑造美好未来,这必将为联想引领传统PC摆脱困境实现突围推波助澜。(文/王易见)

我的联系方式:
QQ 543415188
作者:feitianhanxue 发表于2013-5-17 10:40:21 原文链接
阅读:34 评论:0 查看评论

    
[3]sqlite3必知必会
    来源: 互联网  发布时间: 2013-10-24

sqlite3 数据库简介


SQLite 数据库,是一个非常轻量级自包含(lightweight and self-contained)的DBMS,它可移植性好,很容易使用,很小,高效而且可靠。

SQLite嵌入到使用它的应用程序中,它们共用相同的进程空间,而不是单独的一个进程。从外部看,它并不像一个RDBMS,但在进程内部,它却是完整的,自包含的数据库引擎。

嵌入式数据库的一大好处就是在你的程序内部不需要网络配置,也不需要管理。因为客户端和服务器在同一进程空间运行。

SQLite 的数据库权限只依赖于文件系统,没有用户帐户的概念。SQLite 有数据库级锁定,没有网络服务器。它需要占用内存,但其它开销很小,适合用于嵌入式设备,你需要做的仅仅是把它正确的编译到你的程序。


sqlite常用查询语句

SQLite创建数据库

SQLite使用起来非常方便,仅仅需要敲入带有SQLite数据库名字的"sqlite3"命令即可。如果文件不存在,则创建一个新的(数据库)文件。然后sqlite3程序将提示你输入SQL。敲入SQL语句以分号“;”结束,敲回车键之后,SQL语句就会执行。例如,创建一个包含一个数据库为“user.db”表“cars”的SQLite数据库。

创建命令:

创建数据库user.db

sqlite3 user.db  

创建表cars
create table carsl(name varchar(10), years smallint, price float);

查询表
.table

插入数据

insert into cars values('audi', 1994, 530000.5);
insert into cars values('volvo', 2001, 303478.5);

显示头

.header on

修改显示模式

.mode column

查询数据

select * from cars;  //查询cars表 中所有数据

sqlite> select * from tbl1 where one='xxx';

删除全部语句

sqlite> delete from cars; 

更新语句

sqlite>update cars set name='kaka' where name="mini";  
删除语句
sqlite> delete from cars where name="kaka";     

sqlite>delete from cars;       //删除 cars表 中所有数据

条件语句的应用 "and"  "or"  "and   or" 

sqlite> delete from cars where name="volvo" or name="audi";

sqlite> delete from cars where name="volvo" and price=324200;

sqlite> delete from cars where (name="volvo" or name="audi") and price=324203;


显示结果:


其操作和普通的关系数据库没有太大的差异,可以很方便的对数据进行增、删、改、查。

SQLite可以使用8种方式显示查询结果,大大方便了程序对数据的处理,sqlite3程序可以以八种不同的格式显示一个查询的结果:

.mode MODE ?TABLE?     Set output mode where MODE is one of:
         csv      Comma-separated values
         column   Left-aligned columns.  (See .width)
         html     HTML <table> code
         insert   SQL insert statements for TABLE
         line     One value per line
         list     Values delimited by .separator string
         tabs     Tab-separated values
         tcl      TCL list elements


使用方法: .mode column (输出格式切换到行模式,如上图)


SQLite3 导入导出数据库

导出数据库

sqlite> .databases  (显示数据库)

sqlite> .backup main  user.sql  (备份数据库main, 即完成数据库的复制)
sqlite> .backup user2.sql    (备份默认数据库main)

同时sqlite具有导入/出表,文件,数据库等功能(具体详见   ./help)


参考来源: http://www.cnblogs.com/wdpp/archive/2011/11/30/2386714.html

推荐参考:sqlite官网

                    sqlite数据类型

                    sql语句

                    http://blog.csdn.net/xing_hao/article/details/6660589


作者:youxin2012 发表于2013-5-16 14:56:56 原文链接
阅读:105 评论:0 查看评论

    
最新技术文章:
▪用户及权限基础 2---- Linux权限    ▪用户及权限基础 3---- Linux扩展权限    ▪git 简明教程(1) --创建及提交
▪背包 代码    ▪json对象的封装与解析    ▪01背包,完全背包,多重背包 ,模板代码
▪apache安装详解    ▪HDU 4668 Finding string (解析字符串 + KMP)    ▪《TCP-IP详解 卷1:协议》学习笔记(二)
▪《TCP-IP详解 卷1:协议》学习笔记(持续更新...    ▪windows下使用swig    ▪gensim试用
▪Linux Shell脚本编程--nc命令使用详解    ▪solr对跨服务器表联合查询的配置    ▪递归和非递归实现链表反转
▪Linux磁盘及文件系统管理 1---- 磁盘基本概念    ▪Cholesky Decomposition    ▪HTTP协议学习
▪用C语言写CGI入门教程    ▪用hdfs存储海量的视频数据的设计思路    ▪java多线程下载的实现示例
▪【原创】eAccelerator 一个锁bug问题跟踪    ▪hadoop学习之ZooKeeper    ▪使用cuzysdk web API 实现购物导航类网站
▪二维数组中的最长递减子序列    ▪内嵌W5100的网络模块WIZ812MJ--数据手册    ▪xss 跨站脚本攻击
▪RobotFramework+Selenium2环境搭建与入门实例    ▪什么是API    ▪用PersonalRank实现基于图的推荐算法
▪Logtype    ▪关于端口号你知道多少!    ▪Linux基本操作 1-----命令行BASH的基本操作
▪CI8.7--硬币组合问题    ▪Ruby on Rails 学习(五)    ▪如何使用W5300实现ADSL连接(二)
▪不允许启动新事务,因为有其他线程正在该会...    ▪getting start with storm 翻译 第六章 part-3    ▪递归求排列和组合(无重复和有重复)
▪工具类之二:RegexpUtils    ▪Coding Interview 8.2    ▪Coding Interview 8.5
▪素因子分解 Prime factorization    ▪C# DllImport的用法    ▪图的相关算法
▪Softmax算法:逻辑回归的扩展    ▪最小生成树---Kruskal算法---挑战程序设计竞赛...    ▪J2EE struts2 登录验证
▪任意两点间的最短路径---floyd_warshall算法    ▪Sqoop实现关系型数据库到hive的数据传输    ▪FFMPEG采集摄像头数据并切片为iPhone的HTTP Stream...
▪Ubuntu 13.04 – Install Jetty 9    ▪TCP/IP笔记之多播与广播    ▪keytool+tomcat配置HTTPS双向证书认证
▪安装phantomjs    ▪Page Redirect Speed Test    ▪windows media player 中播放pls的方法
▪sre_constants.error: unbalanced parenthesis    ▪http headers    ▪Google MapReduce中文版
▪The TCP three-way handshake (connect)/four wave (closed)    ▪网站反爬虫    ▪Log4j实现对Java日志的配置全攻略
▪Bit Map解析    ▪Notepad 快捷键 大全    ▪Eclipse 快捷键技巧 + 重构
▪win7 打开防火墙端口    ▪Linux Shell脚本入门--awk命令详解    ▪Linux Shell脚本入门--Uniq命令
▪Linux(Android NDK)如何避免僵死进程    ▪http Content-Type一览表    ▪Redis实战之征服 Redis + Jedis + Spring (二)
▪Tomcat7.0.40 基于DataSourceRealm的和JDBCRealm的资源...    ▪利用SQOOP将ORACLE到HDFS    ▪django输出 hello world
▪工具类之二:RegexpUtils    ▪Coding Interview 8.2    ▪Coding Interview 8.5 iis7站长之家
▪python join    ▪不再为无限级树结构烦恼,且看此篇    ▪python实现变参
▪打开文件数限制功能不断地制造问题    ▪Arduino Due, Maple and Teensy3.0 的 W5200性能测试    ▪Selenium实例----12306网站测试
▪基于协同过滤的推荐引擎    ▪C4.5决策树    ▪C#HTTP代理的实现之注册表实现
▪nosql和关系型数据库比较?    ▪如何快速比较这两个字符串是否相等?    ▪hdoj 1863 畅通工程 最小生成树---prime算法
 


站内导航:


特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

©2012-2021,,E-mail:www_#163.com(请将#改为@)

浙ICP备11055608号-3