- 博客(40)
- 资源 (2)
- 收藏
- 关注
原创 Linux系统调用-- recv/recvfrom/recvmsg函数详解
【recv/recvfrom/recvmsg系统调用】 功能描述: 从套接字上接收一个消息。对于recvfrom 和 recvmsg,可同时应用于面向连接的和无连接的套接字。recv一般只用在面向连接的套接字,几乎等同于recvfrom,只要将recvfrom的第五个参数设置NULL。如果消息太大,无法完整存放在所提供的缓冲区,根据不同的套接字,多余的字节会丢弃。假如套接字上没有消息可以读取,除
2009-12-31 11:12:00 1144 1
原创 Linux发送arp请求与接收arp响应
Linux 中获得本机网卡MAC地址很简单,ioctl()就OK。可如何获得局域网其他主机的MAC地址呢…链路层广播ARP请求,然后接收ARP响应。实现介个功能其实已有现成三方库可用,如libnet。不过想加深对协议的理解和Linux网络编程API的理解,jiayi 还是决定用Linux的PF_PACKET自己实现,改啊改,终于成功~以下是大体思路1. 为数据报分配空间,创建相应的结构体 req,
2009-12-31 10:46:00 2635 1
原创 Linux中文件的压缩与解压缩
对许多用户来说,在DOS和Windows环境下利用工具软件ARJ、Winzip等,压缩或解压文件是比较容易的事。但是,在Linux中如何对文件进行压缩与解压呢?本文基于Red Hat 6.0,介绍了压缩与解压文件的几种方法与技巧,希望对读者有一定的帮助。 命令:compress格式:compress 选项 文件列表功能:用Lempel-ziv
2009-12-31 10:45:00 327
原创 配置arm 交叉编译环境
创建ARM Linux交叉编译环境实践 一、准备工作 首先需要一台运行Linux操作系统的PC以完成我们的编译工作。 其次要准备如下一些源文件。 1、源文件准备 binutils-2.14.tar.gz ftp://ftp.gnu.org/gnu/binu
2009-12-31 10:37:00 356
原创 Linux做一个功能完备的路由器
本文主要介绍如何用Linux做一个功能完备的路由器,这里将主要介绍静态路由器和动态路由器的配置,但不包括IP伪装或者说公用一个IP地址访问外面网络等问题。其已经不属于本主题讨论的范围,请参考其他如防火墙的配置等的内容。LRP(Linux Router Project)已经成立了有好几年的时间了。这个计划的目的是利用Linux操作系统将老旧的个人电脑如486当成网络的路由器使用。利用Linux低成本
2009-12-31 10:36:00 305
原创 用ioctl取得本机ip
#include #include #include #include #include #include #include #include #include #include #include /*用ioctl函数,命令用SIOCGIFADDR可获得本机的IP地址,命令SIOCSIFADDR可设置IP地址,命令SIOCGHWADDR可获得网卡的硬件地址,还有很多,如SIOCGFLAGS、S
2009-12-31 10:34:00 528
原创 C++ string详解
之所以抛弃char*的字符串而选用C++标准程序库中的string类,是因为他和前者比较起来,不必 担心内存是否足够、字符串长度等等,而且作为一个类出现,他集成的操作函数足以完成我们大多数情况下(甚至是100%)的需要。我们可以用 = 进行赋值操作,== 进行比较,+ 做串联(是不是很简单?)。我们尽可以把它看成是C++的基本数据类型。首先,为了在我们的程序中使用string类型,我们必须包含头文
2009-12-31 10:31:00 204
原创 CString、TCHAR*、char*转换
char*、TCHAR*转换CString CString str(****) 下面详细写一下其它转换 ////////////////////////////// /* *********************************************************************** * 函数: TransCStringToTCHAR * 描述:将CString 转换
2009-12-31 10:29:00 2183 2
原创 回调函数的概念及其使用
1 什么是回调软件模块之间总是存在着一定的接口,从调用方式上,可以把他们分为三类:同步调用、回调和异步调用。同步调用是一种阻塞式调用,调用方要等待对方执行完毕才返回,它是一种单向调用;回调是一种双向调用模式,也就是说,被调用方在接口被调用时也会调用对方的接口;异步调用是一种类似消息或事件的机制,不过它的调用方向刚好相反,接口的服务在收到某种讯息或发生某种事件时,会主动通
2009-12-31 10:27:00 261
原创 c++ 文件操作方法说明
在C++中,有一个stream这个类,所有的I/O都以这个“流”类为基础的,包括我们要认识的文件I/O,stream这个类有两个重要的运算符: 1、插入器(向流输出数据。比如说系统有一个默认的标准输出流(cout),一般情况下就是指的显示器,所以,cout2、析取器(>>) 从流中输入数据。比如说系统有一个默认的标准输入流(cin),一般情况下就是指的键盘,所以,cin>>x;就表
2009-12-31 10:26:00 207
原创 关于C++中的const关键字的用法
一 const基础下面四个定义语句是大多数书籍讲解const关键字都会用到的,[1]const int* a = &b;[2]int const *a = &b;[3]int* const a = &b;[4]const int* const a = &b; 如果你能区分出上述四种情况,证明你基础不错,不过也不要高兴太早,这个只是最基础的部分了。不知道也很容易:如果c
2009-12-31 10:23:00 205
原创 windows 生成dll库
头文件:#ifdef __DLL__#define DLL __declspec(dllexport)#else#define DLL __declspec(dllimport)#endifextern "C"{DLL int func1(int aTop,int aLeft);DLL int func2();DLL int func3(char* aFul
2009-12-31 10:21:00 329
原创 setsockopt 设置socket
1. 如果在已经处于 ESTABLISHED状态下的socket(一般由端口号和标志符区分)调用closesocket(一般不会立即关闭而经历TIME_WAIT的过程)后想继续重用该socket:BOOL bReuseaddr=TRUE;setsockopt(s,SOL_SOCKET ,SO_REUSEADDR,(const char*)&bReuseaddr,sizeof(BOOL));2.
2009-12-31 10:14:00 417
原创 BMP文件格式
BMP是英文Bitmap(位图)的简写,它是Windows操作系统中的标准图像文件格式,能够被多种Windows应用程序所支持。随着Windows操作系统的流行与丰富的Windows应用程序的开发,BMP位图格式理所当然地被广泛应用。这种格式的特点是包含的图像信息较丰富,几乎不进行压缩,但由此导致了它与生俱生来的缺点--占用磁盘空间过大。所以,目前BMP在单机上比较流行。 BMP文件格式分析
2009-12-31 10:12:00 275
原创 MFC实现打开、保存文件对话框和浏览文件夹对话框
一、打开文件夹:1、CFileDialog实现CFileDialog hFileDlg(TRUE,NULL,NULL,OFN_FILEMUSTEXIST|OFN_PATHMUSTEXIST|OFN_READONLY, TEXT("支持的图像文件 (*.jpg;*.gif;*.bmp;...)|*.jpg;*.gif;*.bmp|专用Tiff图像文件(*.ti
2009-12-31 10:10:00 858
原创 VC 自定义消息 postmessage用法
1. 在 resource.h文件添加如下代码 定一个自己的消息#define WM_MY_MESSAGE WM_USER + 100 //---------------------by tyds2.在...view.h的文件添加如下://{{AFX_MSG(CPostmessageView)afx_msg void Ontydspos
2009-12-31 10:08:00 454
原创 读写注册表说明实例
一、说明: 注册表是Windows重要组成部分,注册表记录了大量有关电脑软硬件的信息。注册表中的值通过其名称标识。值名称由与键名相同的字符组成。值本身可以是字符串、二进制数据或者是32位无符号值。在这里我们主要运用以下技巧: (一)、预定义的注册表键。注册表包含了几个预定义键:HKEY_LOCAL_MACHINE 包含描述计算机及其配置的条目。其中包括关于处理器、系统主板、内存和
2009-12-31 10:04:00 243
原创 windows 文件属性设置读取函数
设置文件属性: SetFileAttributes(文件名, 属性值)读取文件属性:GetFileAttributes(文件名);读取文件属性SetFileAttributes(文件名, FILE_ATTRIBUTE_READONLY); // 设定为只读SetFileAttributes(文件名, FILE_ATTRIBUTE_HIDDEN ); //设定为隐藏SetFile
2009-12-31 10:03:00 575
原创 CFile操作详解
各种关于文件的操作在程序设计中是十分常见,如果能对其各种操作都了如指掌,就可以根据实际情况找到最佳的解决方案,从而在较短的时间内编写出高效的代码,因而熟练的掌握文件操作是十分重要的。本文将对Visual C++中有关文件操作进行全面的介绍,并对在文件操作中经常遇到的一些疑难问题进行详细的分析。 1.文件的查找 当对一个文件操作时,如果不知道该文件是否存在,就要首先进行查找。MFC中有一
2009-12-31 09:59:00 945
原创 制作简单视频播放器
[知识点]1、构建视频NetConnection和NetStream;2、音量控制用soundTransform(这个让我耗了一些精力,在AS2中可以setvolume,在AS3就不行了);3、暂停用pause(),恢复回放暂停的视频流用resume();4、接收视频信息用onMetaData(如视频总时间data.duration);5、侦听视频流的开始和结束用NetStatusEvent.NE
2009-12-31 09:57:00 831
原创 netlink 编程介绍
Linux从2.2开始支持PF_NETLINK域的通讯方式,这个方式主要的用途是在Linux的内核空间和用户空间进行通讯。目前在网络上面关于netlink编程的中文资料很少,为了促进对netlink编程的理解我编写了这篇文章,由于我对netlink的了解不是很透彻,特别是对于内核部分不是很熟悉,所以文章中肯定有很多错误的地方还请大家指正。文章分下面几个部分进行讲述netlink 基础知识
2009-12-30 15:16:00 6217 3
原创 qt 常见类型转换
Qstring 转换char*问题!方法一:QString qstr("hello,word");const char * p = qstr.toLocal8Bit().data();方法二:const char *p = qstr.toStdString().data();转换过来的是常量把当前时间转化为QString...public QDateTime qdate = QDate
2009-12-19 11:53:00 474
转载 Linux内核配置系统浅析
1. 配置系统的基本结构Linux内核的配置系统由三个部分组成,分别是:Makefile:分布在 Linux 内核源代码中的 Makefile,定义 Linux 内核的编译规则; 配置文件(config.in):给用户提供配置选择的功能; 配置工具:包括配置命令解释器(对配置脚本中使用的配置命令进行解释)和配置用户界面(提供基于字符界面、基于 Ncurses 图形界面以及基于
2009-12-19 11:49:00 165
原创 socket编程之主机名和网络名查询
一、函数说明: 1)uname(2) 说明: 可以告诉程序关于系统的信息。 原型: #include int uname(struct utsname *buf) 参数: struct utsname { char sysname[SYS_NMLN];
2009-12-19 11:46:00 397
原创 找回误删并清除了回收站的文档
找回误删并清除了回收站的文档 步骤: 1、单击“开始——运行,然后输入regedit (打开注册表)2、依次展开:HEKEY——LOCAL——MACHIME/SOFTWARE/microsoft/WINDOWS/ CURRENTVERSION/EXPLORER/DESKTOP/NAMESPACE 在左边空白外点击“新建” ,选择:“主键”,把它命名为“645FFO40——5081——1
2009-12-19 11:41:00 150
原创 GDB的使用
GDB的使用 当程序出错并产生core 时快速定位出错函数的办法 gdb 程序名 core文件名(一般是core,也可能是core.xxxx) 调试程序使用的键 r run 运行.程序还没有运行前使用 c cuntinue 继续运行。运行中断后继续运行 q 退出 kill 终止调试的程序 h help 帮助 命令补全功能 step 跟入
2009-12-19 11:36:00 200
原创 NFS服务器的安装
一、NFS服务器的安装 检查linux系统中是否安装了nfs-utils和portmap两个软件包 (RHEL4系统默认已经安装了这两个软件包) 命令#rpm –q nfs-utils portmap 二、查看NFS服务器是否启动 命令#service nfs starus #service portmap status 三、
2009-12-19 11:33:00 202
原创 Source Insight技巧收集
Source Insight技巧收集1、背景色选择 要改变背景色Options->preference->windows background->color设置背景色2、解决字符等宽对齐问题。 SIS默认字体是VERDANA,很漂亮。这网页上应该也是用的VERDANA字体。但由于美观的缘故,VERDANA字体是不等宽的。比如下面两行 llllllllll MMM
2009-12-19 11:31:00 1271
原创 LINUX目录详解
/bin引导启动所需的命令或普通用户可能用的命令(可能在引导启动后)。/sbin类似/bin ,但不给普通用户使用,虽然如果必要且允许时可以使用。/etc特定机器的配置文件。/rootroot用户的家目录。/lib根文件系统上的程序所需的共享库。/lib/modules核心可加载模块,特别是那些恢复损坏系统时引导所需的(例如网络和文件系统驱动)。/dev设备文件。/tmp临时文件。引导启动后运行的
2009-12-19 11:24:00 213
原创 文件系统制作总结(cramfs)
1构造目标板的根目录及文件系统1.1 建立一个目标板的空根目录我们将在这里构建构建根文件系统,创建基础目录结构. 存放交叉编译后生成的目标应用程序(BUSYBOX,TINYLOGIN),存放库文件等。[arm@localhost root]# mkdir dir[arm@localhost root]# pwd/root/dir[arm@localhost root]# c
2009-12-19 11:14:00 1080
原创 压缩,解压文件
.tar解包:tar xvf FileName.tar打包:tar cvf FileName.tar DirName(注:tar是打包,不是压缩!)---------------------------------------------.gz解压1:gunzip FileName.gz解压2:gzip -d FileName.gz压缩:gzip FileName .tar.gz解压:tar zx
2009-12-19 10:37:00 269
原创 Qt 中的多线程 (一)
QT通过三种形式提供了对线程的支持。它们分别是,一、平台无关的线程类,二、线程安全的事件投递,三、跨线程的信号-槽连接。这使得开发轻巧的多线程Qt程序更为容易,并能充分利用多处理器机器的优势。多线程编程也是一个有用的模式,它用于解决执行较长时间的操作而不至于用户界面失去响应。在Qt的早期版本中,在构建库时有不选择线程支持的选项,从4.0开始,线程总是有效的。线程类Qt 包含下面一些线程相关的类:Q
2009-12-19 10:31:00 478
原创 QObject QT所有类的基类
QObject是QT所有类的基类,QObject是Qt Object Model的核心CODE:/*什么是Qt Object Model,主要包括如下的东西1.信号和槽2.良好的对象属性,如可查询和很好看,,,~~ 3.有力的事件和事件过滤器4.国际化字符设计5.定时器为GUI的事件提供毫秒级的支持6.很优秀的对象树结构7.当对象销毁时指针自动设置为0 8.a dynamic cast
2009-12-19 10:24:00 2509
原创 Linux环境变量设置
关于用户环境变量PATH的设置;在一般情况下,Linux文件系统中bin或sbin目录中的文件都是可执行的。有时我们为了方便不输入路径就能调用指令或工具,这时要就要设置用户的环境变量PATH。看下面的一例:[root@localhost ~]# lsadduml.sh lsfile.sh mkuml-2004.07.17 mkuml-2004.07.17-ananas.tar.bz2 my
2009-12-19 10:10:00 229
原创 linux脚本编写基础
Linux脚本编写语法基础介绍:1 开头程序必须以下面的行开始(必须方在文件的第一行):#!/bin/sh符号#!用来告诉系统它后面的参数是用来执行该文件的程序。在这个例子中我们使用/bin/sh来执行程序。当编写脚本完成时,如果要执行该脚本,还必须使其可执行。要使编写脚本可执行:编译 chmod +x filename 这样才能用./filename 来运行2 注释在进行shell编程时,以#开
2009-12-19 10:09:00 222
原创 修改qt程序的图标(for windows)
最近经常在windows写qt程序。编译完的qt程序图标是windows默认的应用程序图标,不好看。于是就想给它换一个,找了一下qt的帮助文档,里面有提到这个问题。方法也挺简单的: 首先当然要有一个图标了,呵呵。把这个图标复制到程序的主目录下,姑且名字叫”myicon.ico”吧。没有?可以自己用vc画一个。然后编写一个icon.rc文件。里面只有一行文字: IDI_ICON1 ICON “myi
2009-12-19 10:00:00 405
原创 移植QtE4.5.2到开发板
1. configure参数:./configure /-qconfig myconfig /-prefix /usr/QtEmbedded-4.5.2-arm /-nomake tools /-nomake examples /-nomake demos /-nomake docs /-nomake translations /-stl /-continue /-qt-sql-sqlite /-
2009-12-19 09:58:00 410
原创 如何将QString转换为char *或者相反
先看看官方是如何说的:How can I convert a QString to char* and vice versa ?(trolltech)Answer:In order to convert a QString to a char*, then you first need to get a latin1 representation of the string b
2009-12-19 09:34:00 234
原创 Linux图形界面基本知识
输入第一个程序的代码,代码原型如下:#include int main(int argc,char*argv[]){ GtkWidget *window; gtk_init(&argc,&argv); window=gtk_window_new(GTK_WINDOW_TOPLEVEL); gtk_window_set
2009-09-09 09:48:00 429
原创 linux popen函数
描述popen() 函数 用 创建管道 的 方式启动一个 进程, 并调用 shell. 因为 管道是被定义成单向的, 所以 type 参数 只能定义成 只读或者 只写, 不能是 两者同时, 结果流也相应的 是只读 或者 只写. command 参数 是 一个 字符串指针, 指向的是一个 以 null 结束符 结尾的字符串, 这个字符串包含 一个 shell 命令. 这个命令 被送到
2009-05-22 10:05:00 8485
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人