自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(84)
  • 资源 (4)
  • 论坛 (3)
  • 收藏
  • 关注

转载 使用C语言来扩展PHP,写PHP扩展dll

以前写过一次PHP扩展DLL,那个是利用调用系统的COM口实现的扩展,与PHP不能真正融合。心血来潮,研究了一下PHP的源码,网上找了一些资料,自己尝试写了一个扩展DLL,测试没问题。下面记录一下具体扩展方法:  1、首先从www.php.net网站上下载php源码,此处以php-5.2.17版本为例,下载后解压至E:盘根目录下(目录可以自己随意定)。  2、下载安装VC++ 6.0,因为

2012-03-29 02:44:04 618

原创 警告: assignment makes pointer from integer without a cast的另外一种原因

char * = rtnString();原因是rtnString()函数没有在使用前声明。

2011-11-14 11:35:54 844

转载 libxml库之xmlParseMemory和xmlDocDumpFormatMemory函数

两个函数,怎么在内存中处理xml文件。有个疑问,xmlChar *xmlbuff;这样系统第一次分配了xmlbuff的大小以后。对xml做修改,可以成功吗。有空试试。函数原型:xmlParseMemoryxmlDocPtr xmlParseMemory (const char * buffer, int size)parse an XML in-memo

2011-11-10 12:54:10 10813 1

原创 带有xml转发的select非阻塞,修正了一个错误

修改部分在transfer.c第288行,修改如下ptr = conns[m].totalBuffer;conns[m].edSize = 0;//-----------------------同一文件,这样修改貌似可以减少提示出现的不是utf-8字符串的问题。79 content[target->XmlLength+1] = '/0';//about utf-8p

2011-11-09 00:34:00 1010

转载 %m和其他参数

GNU glibc provides an extension to printf, %m, which outputs strerror(errno).This specifications fields only available on glibc, not portableto other compiler, like VC 6.0.e.g.#include #

2011-11-08 17:59:47 642

转载 文件描述符与Linux文件IO

Linux系统可以看成是一个由文件组成的系统,在linux系统中,基本上所有的设备,硬件,资源都被看成一个文件,比如,在/dev下面我们可以看到我们的硬盘sda1(我的机器是安装的SCIS硬盘的虚拟机),终端设备ttyn,在/proc目录下面我们可以看到当前的内存信息,cat /proc/meminfo,可以查看CPU的信息: cat /proc/cpuinfo , 这些文件都是被linux系统抽

2011-11-08 16:20:58 987 1

原创 两个应该注意的小问题

1,套接口程序中使用的int,short,long等数字数据需要网络字节序的转化。2,

2011-11-08 15:31:31 421

原创 反思:关于select的一些经历

今天交了,该了几改的程序。是一个服务器转发聊天程序,第一次是在别人例子的基础上直接做得。后来,发现我用得时阻塞,当时考虑的问题太多。包括一个包分了好几次才收到,或者一次收到了,相互独立且完整的几个包。最重要的一个问题是,在使用费阻塞的io以后,因为对select的FD_ISSET理解错误(我认为是不是变化,但事实上是不是在集合内),我对select返回可读套接字后能不能一定读到数据产生了疑问。

2011-11-08 12:33:38 700

转载 关于initializer element is not constant错误

关于 static storage duration: C99 6.2.4 Storage durations of objects 第3款: 3 An object whose identifier is declared with external or internal linkage, or with the storage-class specifier static has sta

2011-10-31 10:57:50 21583 4

转载 C语言提供了六种位运算符

一、位运算符C语言提供了六种位运算符:& 按位与| 按位或^ 按位异或~ 取反>> 右移1. 按位与运算按位与运算符"&"是双目运算符。其功能是参与运算的两数各对应的二进位相与。只有对应的两个二进位均为1时,结果位才为1 ,否则为0。参与运算的数以补码方式出现。例如:9&5可写算式如下: 00001001 (9的二进制补码)&00000101

2011-10-29 12:16:31 766

转载 使用select+非阻塞socket写的网络数据转发程序

在与远程服务器connect的时候,程序要等待连接完全建立完毕才返回,这里会让程序产生延迟。而在非阻塞中不会等待,直接去处理其它连接。“程序有问题,暂时未仔细看”#include #include #include #include #include #include #include #define closesocket cl

2011-10-29 01:49:54 1788 1

转载 linux非阻塞的socket EGGAIN的错误处理

在Linux中使用非阻塞的socket的情形下。(一)发送时  当客户通过Socket提供的send函数发送大的数据包时,就可能返回一个EGGAIN的错误。该错误产生的原因是由于send 函数中的size变量大小超过了tcp_sendspace的值。tcp_sendspace定义了应用在调用send之前能够在kernel中缓存的数据量。当应用程序在socket中设置了O_NDELA

2011-10-29 00:55:00 1345 1

转载 linux下非阻塞的tcp研究

这是根据自己的笔记整理的,如有错误,欢迎指出来.  tcp协议本身是可靠的,并不等于应用程序用tcp发送数据就一定是可靠的.不管是否阻塞,send发送的大小,并不代表对端recv到多少的数据.  在阻塞模式下,send函数的过程是将应用程序请求发送的数据拷贝到发送缓存中发送并得到确认后再返回.但由于发送缓存的存在,表现为:如果发送缓存大小比请求发送的大小要大,那么send函数立即返回,同时

2011-10-29 00:46:49 758

转载 关于IO阻塞和非阻塞的零碎知识

1, 关于阻塞的概念阻塞(Block)这个概念。当进程调用一个阻塞的系统函数时,该进程被置于睡眠(Sleep)状态,这时内核调度其它进程运行,直到该进程等待的事件发生了(比如网络上接收到数据包,或者调用sleep指定的睡眠时间到了)它才有可能继续运行。与睡眠状态相对的是运行(Running)状态,在Linux内核中,处于运行状态的进程分为两种情况:正在被调度执行。CPU处于

2011-10-29 00:03:25 797

转载 read/write的包裹函数

《Unix环境高级编程》ssize_t writen (int fd, const void *buf, size_t num) { ssize_t res; size_t n; const char *ptr; n = num; ptr = buf; while (n > 0) { /* 开始写*/ if ((res = write

2011-10-28 23:43:34 563

转载 关于errno与perror,strerror函数

errno是一个由POSIX和ISO C标准定义的符号,看(用)起来就好像是一个整形变量。当系统调用或库函数发生错误的时候,比如以只读方式打开一个不存在的文件时,它的值将会被改变,根据errno值的不同,我们就可以知道自己的程序发生了什么错误,然后进行相应的处理。有人说,函数不是可以返回值吗,根据返回值照样可以判断程序在哪里出错了,为什么还需要errno?如果你有这样的疑问,推荐你看下这篇文章。

2011-10-28 18:01:06 829

原创 不能两次使用waitpid等待一个子进程的结束

无意中在主线程和SIGCHLD信号函数中,同时使用了waitpid,结果waitpid不返回子进程pid了

2011-10-27 17:43:00 833

转载 Linux文件rwx属性的含义

Linux上的文件以.开头的文件被系统视为隐藏文件,仅用ls命令是看不到他们的,而用ls -a除了显示 一般文件名外,连隐藏文件也会显示出来。  ls -l(这个参数是字母L的小写,不是数字1)  这个命令可以使用长格式显示文件内容,如果需要察看更详细的文件资料,就要用到ls -l这个指令。例如我在某个目录下键入ls -l可能会显示如下信息(一共7个栏位):  文件属性 文件数 拥有者

2011-10-27 14:14:06 895

原创 父子进程之间的参数传递和数据返回 pthread_create & pthread_join

自己睡不着敲着玩的,第一个程序是主线程传递一个结构体地址给子线程,第二个传递字符串,第三个是子线程通过pthread_exit()传递数据,然后pthread_join阻塞那里捕获。 int pthread_create(pthread_t *restrict thread,                  const pthread_attr_t *restrict attr,

2011-10-27 02:43:18 2188

转载 信号量和进程共享内存的小例子

semm.h#include #include #include #include #include #include typedef int sem_t;union semun{ int val; struct semid_ds *buf; unsigned short *array;} arg;sem_t CreateSem(key_t key, int

2011-10-26 15:18:42 749

转载 linux系统调用之ftok()

ftok原型如下:                        key_t ftok( char * fname, int id )                        fname就时你指定的文件(存在,可以访问的)名,id是子序号。先来简单的叙述一下,如果不太清楚的话,再接着向下看:                ftok函数是根据pathname和id来创建一个关键

2011-10-25 18:06:42 550

转载 一个简单的互斥锁的例子

/*thread_example.c : c multiple thread programming in linux */#include#include#include#include#define MAX1 10#define MAX2 30pthread_t thread[2];pthread_mutex_t mut;int number=0,

2011-10-25 01:42:45 1207

转载 Linux进程间通信(二)——共享内存、消息队列

一、共享内存                  最高效的进程间通信机制。多个进程共享一段内存。需要依靠某种同步机制,如互斥锁或信号量。                  通常步骤为:创建 -> 映射 -> 使用 -> 撤销映射 ->删除               相关函数可以参考:Linux 共享内存#include #includ

2011-10-25 00:45:41 629

转载 Linux进程间通信(一)——管道、信号量

一、Linux进程间通信方式 :有六种方式在两个程序间传递信息         1、信号( Singal )        2、管道 ( Pipe ) 及有名管道        3、信号量 ( Semaphore )        4、共享内存 ( SharedMessage)        5、消息队列 ( MessageQueue )

2011-10-25 00:42:07 738 1

转载 进程返回值

#include #include #include int main(){pid_t pid;int status;if((pid = fork()) printf("fork error");else if(pid == 0)exit(7);if(wait(&status) != pid)printf("wait error");

2011-10-24 16:27:04 393

转载 C语言 static的意义

在C语言中,static的字面意思很容易把我们导入歧途,其实它的作用有三条。(1)第一个作用:隐藏。当我们同时编译多个文件时,所有未加static前缀的全局变量和函数都具有全局可见性。为理解这句话,我举例来说明。我们要同时编译两个源文件,一个是a.c,另一个是main.c。下面是a.c的内容#include增加这条语句char a = ‘A‘; // global variablevo

2011-10-20 17:27:30 495

转载 linux socket的select函数例子

使用select函数可以以非阻塞的方式和多个socket通信。程序只是演示select函数的使用,功能非常简单,即使某个连接关闭以后也不会修改当前连接数,连接数达到最大值后会终止程序。1. 程序使用了一个数组fd_A,通信开始后把需要通信的多个socket描述符都放入此数

2011-10-19 01:32:52 5138 2

转载 WinSock I/O系列1:多路复用I/O支持多Client的实现及效率讨论

1.       引言多路复用I/O模型(select)是UNIX/LINUX用得的最多的一种I/O模型,在Windows下也可做为一种同步I/O使用。本文给出该I/O模型处理多Client的简单(在主线程中)实现。2.       关于selectselect I/O模型是一种异步I/O模型,在单线程中Linux/WinNT默认支持64个客户端套接字。这种

2011-10-19 01:18:24 799

转载 深入UNIX编程:一个简单聊天室的两种实现 (fcntl 和 select)

在互联网相当普及的今天,在互联网上聊天对很多“网虫”来说已经是家常便饭了。聊天室程序可以说是网上最简单的多点通信程序。聊天室的实现方法有很多,但都是利用所谓的“多用户空间”来对信息进行交换,具有典型的多路I/O的架构。一个简单的聊天室, 从程序员的观点来看就是在多个I/O端点

2011-10-19 01:13:04 499

转载 Linux网络编程. 服务器模型(软件工程节选)

学习过《软件工程》吧.软件工程可是每一个程序员"必修"的课程啊.如果你没有学习过, 建议你去看一看. 在这一章里面,我们一起来从软件工程的角度学习网络编程的思想.在我们写程序之前, 我们都应该从软件工程的角度规划好我们的软件,这样我们开发软件的效率才会高. 在网络程序里面,一般的

2011-10-19 01:11:11 579

转载 Linux select() 详解

select系统调用是用来让我们的程序监视多个文件句柄(file descriptor)的状态变化的。程序会停在select这里等待,直到被监视的文件句柄有某一个或多个发生了状态改变。0、1、2三个,0是标准输入,1是标准输出,2是标准错误输出。0、1、2是整数表示的

2011-10-19 01:06:27 1209

转载 linux tcp并发式服务器应用SELECT函数编写实例源代码(转载)

#include #include #include #include #include #include #include #include #include #define MYPORT 1234    // the port user

2011-10-18 23:50:15 4185

转载 关于“双工”什么的

全双工是通讯传输的一个术语  单工就是在同一时间只允许甲方向乙方传送信息,而乙方不能向甲方传送 。(比喻汽车的单行道)  全双工(Full Duplex)是 在微处理器与外围设备之间采用发送线和接受线各自独立的方法,可以使数据在两个方向上同时进行传送操作。指在发送

2011-10-18 18:13:56 487

转载 Linux下的段错误(segmentation fault)产生的原因及调试方法

简而言之,产生段错误就是访问了错误的内存段,一般是你没有权限,或者根本就不存在对应的物理内存,尤其常见的是访问0地址.一般来说,段错误就是指访问的内存超出了系统所给这个程序的内存空间,通常这个值是由gdtr来保存的,他是一个48位的寄存器,其中的32位是保存由它指向的gdt表

2011-10-17 17:25:34 447

转载 gch文件

gcc会预编译头文件成gch文件以节省编译时间,如果改变了头文件源码而不重新编译的话,gcc还会使用老的gch文件。但是当加选项-E只做预编译的时,gcc会使用最新的头文件源码。这样就产生了编译生成的结果与预编译生成的结果不一样的现象。来源:http://hi.bai

2011-10-14 15:53:20 1054

转载 C语言字符串函数总结

来源: 谷育龙的日志        今天总结了下C语言字符串函数。C语言字符串函数总结:1.字符处理库(ctype)中的函数2.stdio中的字符串和字符输入/输出的函数3.通用实用库stdlib中的字符串转换函数4.字符串处理库string中

2011-10-10 18:31:13 613

转载 关于数据类型

在进一步讨论更深的主题之前,我们需要先停一停,快速地回顾一下可移植问题。Linux1.2版本和2.0版本之间的不同就在于额外的多平台能力;结果是,大多数源代码级的移植问题已经被排除了。这意味着一个规范的Linux驱动程序也应该是多平台的。     但是,与内核代码

2011-10-10 13:51:23 506

转载 Linux下Socket编程中用send发送结构体

Linux网络通信 Linux下多客户端聊天软件  最近在开发一个Linux下的聊天软件,好久没有做C语言的开发了,感觉到很多东西已经生疏了,这下又碰到用Socket传递结构体的问题,google了一下,发现也有不少朋友遇到同样的问题,所以就打算写出自己的解决办法,跟大家分享

2011-10-09 21:33:19 523 1

转载 memcpy()详解

函数原型#include   #include void *memcpy(void *dest, const void *src, size_t n); 功能由src指向地址为起始地址的连续n个字节的数据复制到以dest指向地址为起始地址的空间内。函数返

2011-10-09 14:59:12 1402

转载 "libxml/parser.h: 没有那个文件或目录"解决方案

这是因为在ubuntu上没有安装libxml2-dev,这个包应该是开发用的,而已安装的libxml2应该只是像jre一样的部件。解决方案:sudo apt-get install libxml2-dev 这个命令算是安装上了。所有的头文件在/usr/include/libx

2011-10-09 10:54:36 11849

Qt4书中所有例子的代码

Qt4书中所有例子的代码,很详细的。用来学习很不错,不用全部自己一段一段的敲了

2011-04-06

Spreadsheet 原代码 C++ QT4书中例子

C++ programming with QT4 书中前几张的源码

2011-01-14

8085微处理器课件(University of mysore)

8085微处理器课件(University of mysore)

2011-01-02

Software System ppts(University of Mysore) 系统软件课件(印度迈索尔大学)

Software System ppts(University of Mysore) 系统软件课件(印度迈索尔大学)

2011-01-02

请问QT书中附录D里的这句话什么意思?

发表于 2011-01-04 最后回复 2012-11-23

一个问题,关于QNetworkInterface

发表于 2011-08-04 最后回复 2012-11-23

Spreadsheet原代码 C++ GUI Programming with QT4书中的

发表于 2011-01-14 最后回复 2011-04-06

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人 TA的粉丝

提示
确定要删除当前文章?
取消 删除