06 2013 档案

摘要:sqlite3_column_value()的返回对象是一个 unprotected sqlite3_value 对象.一个不受保护的sqlite3_value object可能只能用于 sqlite3_bind_value() 和sqlite3_result_value().如果一个unprotected sqlite3_value 对象( sqlite3_column_value()函数的返回... 阅读全文
posted @ 2013-06-29 11:59 陈哈哈 阅读(7851) 评论(0) 推荐(0) 编辑
摘要:首先,我们要先了解一下UDP包的结构。 图1 UDP报文格式从图1,我们可以看出,从UDP包中,我们可以获取的信息只有源端口和目的地端口。我们不能获取到源IP因为报文中没有源IP。真正包含IP地址的是IPV4伪报头中。 图2 UDP包的IPV4伪报头格式可以看出,图1中的UDP包其实是包含在图2中的,图2中清楚地指出了包的源地址(source addresses)和目标地址(destination addresses)都在IPv4头中。图2的协议是UDP专用的(详见List of IP protocol numbers):17(0x11)。UDP length指的是UDP头(head)和数据( 阅读全文
posted @ 2013-06-27 20:22 陈哈哈 阅读(3002) 评论(0) 推荐(0) 编辑
摘要:在接受到UDP包后,有时候我们需要根据所接收到得UDP包,获取它的路由目的IP地址和头标识目的地址。(一)主要的步骤:在setsockopt中设置IP_PKTINFO,然后通过recvmsg来获取struct in_pktinfo(struct in_pktinfo是struct msghdr中msg_control的成员).in_pktinfo 结构体(如下所示),我们可以从in_pktinfo中获取路由目的地址(destination address of the packet)、头标识目的地址(source address of the packet)。这种方法只能用于UDP(数据报)传 阅读全文
posted @ 2013-06-27 14:03 陈哈哈 阅读(19906) 评论(4) 推荐(0) 编辑
摘要:06-24 18:04:36.857: E/AndroidRuntime(22251): FATAL EXCEPTION: main 06-24 18:04:36.857: E/AndroidRuntime(22251): android.os.NetworkOnMainThreadException 06-24 18:04:36.857: E/AndroidRuntime(22251): at android.os.StrictMode$AndroidBlockGuardPolicy.onNetwork(StrictMode.java:1128) 06-24 18:04:... 阅读全文
posted @ 2013-06-24 20:54 陈哈哈 阅读(22234) 评论(0) 推荐(1) 编辑
摘要:以下代码在Federo9上试验成功。一、格式化输入16进制字符串printf("Format:%.2x\n",10);输入结果:二、测试各类型的占用的字节数int main(int argc, char *argv[]){ int OutputHex = 1; unsigned char aValue=10; char Buffer[10]; int len=sprintf(Buffer, OutputHex ? "%.2X " : "%c", aValue); printf("Len:%d Format:%s\n" 阅读全文
posted @ 2013-06-21 13:22 陈哈哈 阅读(761) 评论(0) 推荐(0) 编辑
摘要:一、read系统调用 系统调用read的作用是:从与文件描述符filedes相关联的文件里读入nbytes个字节的数据,并把它们放到数据区buf中。它返回实际读入的字节数。这可能会小于请求的字节数。如果read调用返回0,就表述未读入任何数据,已经达到了文件尾。同样,如果返回的是-1,就表示read调用出现了错误。 #include size_t read(int filed... 阅读全文
posted @ 2013-06-21 13:21 陈哈哈 阅读(540) 评论(0) 推荐(0) 编辑
摘要:assert的初步认识assert宏指令是用来诊断程序是否有误的,函数原型如下void assert(int expression) 那为什么我们要使用assert而不用printf呢?因为assert可以帮我们监测出是哪个条件不满足了,而且可以直观地显示出是代码中的哪一行出问题了,并且,当我们不打算用assert来诊断程序的时候,可以很方便地通过宏定义#define NDEBUG 取消assert的诊断。相比于自己写一个一个printf,自己判断程序哪一行出错,显然assert更有优势。其实assert的时候很简单,因为他的使用就跟if一样,assert(expression);expres 阅读全文
posted @ 2013-06-18 18:47 陈哈哈 阅读(4451) 评论(0) 推荐(1) 编辑
摘要:感觉学习代码库最好的方法就是运行一下。下面附上结果和示例代码#include <stdio.h>#include <string.h>int main(){ const char * cs="Hello World"; const char * ct="Hello"; char * s=malloc(20); memset(s,0,20); char * t; int c='o'; const size_t n=3; //strcpy(s,ct); printf("const char * cs=Hell 阅读全文
posted @ 2013-06-17 16:19 陈哈哈 阅读(299) 评论(0) 推荐(0) 编辑
摘要:一、向Main函数中传递参数argv 1、选中工程配置 2、写入你要传递的参数 3、清理工程→建立工程,以便让设置生效 二、设置断点 相关的快捷键 三、代码自动补全快捷键修改 1、快捷键设置 2、修改快捷键 四、设置自动缩进4个空格 1、选中编辑器配置 2、进行相关的设置 五、用kdevelop来开发arm linux上的应用程序 ... 阅读全文
posted @ 2013-06-16 12:12 陈哈哈 阅读(1133) 评论(0) 推荐(0) 编辑
摘要:1)、把Dos/Windows下的文件移至Linux/Unix系统 $ sed -e 's/.$//' mydos.txt > myunix.txt2)、把Linux/UNIX 文本移至 Windows 系统,使用以下脚本执行必需的格式转换:$ sed -e 's/$/\r/' myunix.txt > mydos.txt3)chmod +w filename 改变文件的权限chmod 77... 阅读全文
posted @ 2013-06-15 21:13 陈哈哈 阅读(196) 评论(0) 推荐(0) 编辑
摘要:为什么要建立交叉编译环境?开发板上的Linux系统往往是经过裁剪后的,各项功能不如PC(或虚拟机)上的Linux那么完善,并且在开发板上操作比较不方便,这时候,我们就需要把大量的工作(写代码,编译等)放在PC的Linux上,那么自然编译这个过程也想放在PC上,等编译完了直接通过ftp(或NFS)给开发板。所以PC上的交叉编译环境就很有必要了。注:以下的操作步骤在Fedora9的上实验成功,其他环境没有试验过。建立交叉编译环境的步骤1、首先我们需要将文件从PC上传送到Fedora上。2、将/home/plg中的arm-linux-gcc- 4.5.1-v6-vfp-20101103.tgz复制到 阅读全文
posted @ 2013-06-15 17:54 陈哈哈 阅读(1320) 评论(0) 推荐(0) 编辑
摘要:我的VMware版本是8.0.3。其他版本的设置应该大致相同。1、注意我们的网络模式是Bridge2、我们的网卡设置3、目标虚拟机(Linux)的IP4、我的主机的IP地址5、网络调试助手的设置6、上一段用来调试网络的代码。这段代码使用UDP进行通信,主要的作用是应答式的,一回一答。#include <sys/types.h> #include <sys/socket.h> #include <arpa/inet.h> #include <stdio.h> #define BUFLEN 255 int main(int argc, char ** 阅读全文
posted @ 2013-06-14 19:01 陈哈哈 阅读(1038) 评论(0) 推荐(0) 编辑
摘要:首先我们要介绍的是tcpdump命令。这个命令相当于Linux下的网络调试助手。1、监听网络上UDP包端口2000并显示包内的信息。效果见图1。tcpdump -A udp port 2000 图1 tcpdump -A udp port 20002、监听eth2网卡上UDP包端口2000并显示包内的信息。效果见图2。tcpdump -A udp port 2000 -i eth2 图2 tcpdump -A udp port 2000 -i eth23、监听制定网卡中主机的消息。效果见图3。tcpdump host 192.168.41.44 -i eth2 ... 阅读全文
posted @ 2013-06-14 18:37 陈哈哈 阅读(347) 评论(0) 推荐(0) 编辑
摘要:1.下载压缩包后解压sqlite-3.6.3tar.gz到/home目录下tar -zxvf sqlite-3.6.3tar.gz -C /homecd /home/mkdir sqlite-ix86-linux/cd /home/sqlite-ix86-linux//sqlite-3.6.3/configure --prefix=/home/sqlite-ix86-linux/其中--prefix=/home/sqlite-ix86-linux/的意思是将configure是用来进行用户个性配置的工具, 一般- -开头的说明的是需要配置的选项,--prefix就是说软件额安装目录设置在哪里, 阅读全文
posted @ 2013-06-14 11:11 陈哈哈 阅读(2491) 评论(0) 推荐(0) 编辑
摘要:在调试的环境下,我们可以很方便地通过反汇编窗口查看程序生成的反汇编信息。如下图所示。 记得中断程序的运行,不然看不到反汇编的指令 看一个简单的程序及其生成的汇编指令 #include<stdio.h>#include<windows.h>const long Lenth=5060000/5;int main(){ while(true){ for(lo... 阅读全文
posted @ 2013-06-14 09:59 陈哈哈 阅读(12118) 评论(0) 推荐(0) 编辑
摘要:请按照以下图片进行调整1、选中编辑器配置图1 编辑器配置2、调整字体大小图2 调整字体大小 阅读全文
posted @ 2013-06-13 15:00 陈哈哈 阅读(1262) 评论(0) 推荐(0) 编辑
摘要:1、其实高级语言和面向过程的语言最求的目标都是一致的,高可复用性,另外,封装性。我发现自己在写C语言的时候,总是不自觉地就引入了高级语言的一些封装性的思想(如以下代码段1所示),而我的同学却总是按着最原始的方式对函数进行命名。学过编译原理的同学就会知道,最原始的C++编译器其实就是将C++转化成C语言,然后用C语言的编译器进行实现的。C++中的类转化成C语言,其实总体的思想就是在函数名上多添加了一个类名,在函数签名上有一些添加信息协助编译器翻译成C语言。代码段1的好处就是里面的函数跟别的C函数库中的函数不容易重合,另外,通过命名提醒调用者这些函数是一类的东西。 1 #ifndef __I2C_ 阅读全文
posted @ 2013-06-10 19:58 陈哈哈 阅读(503) 评论(0) 推荐(0) 编辑