linux网络编程
文章平均质量分 78
abc78400123
学生而已
展开
-
VMware环境下用kgdb调试内核
一、kgdb安装1. 系统配置:VMware Workstation 5.5.4Fedora Core 3(2.6.9-1.667)kgdb-2.4(linux-2.6.15.5)2. 系统安装:在虚拟机上安装FC3,然后参照后面的文章,将系统的内核升级到2.6.15.5,命名为“FC3-kgdb-client”。Clone一个和预装环境一样的系统,选择"Create a转载 2011-08-27 10:42:22 · 427 阅读 · 0 评论 -
用原始套接字收发数据包程序
通常我们看到的socket是拆包后的,只能看到用户数据,原始套接字raw就是给你看最原始的,以方便你进行干预。从用户的角度来看,SOCK_STREAM、SOCK_DGRAM这两类套接字似乎的确涵盖了TCP/IP应用的全部,因为基于TCP/IP的应用,从 协议栈的层次上讲,在传输层的确只可能建立于TCP或UDP协议之上(图),而SOCK_STREAM、SOCK_DGRAM又分别对应于TCP和 UDP原创 2012-05-12 16:04:31 · 3126 阅读 · 0 评论 -
linux消息队列操作
对消息队列的操作无非有下面三种类型:1、 打开或创建消息队列消息队列的内核持续性要求每个消息队列都在系统范围内对应唯一的键值,所以,要获得一个消息队列的描述字,只需提供该消息队列的键值即可;注:消息队列描述字是由在系统范围内唯一的键值生成的,而键值可以看作对应系统内的一条路经。2、 读写操作消息读写操作非常简单,对开发人员来说,每个消息都类似如下的数据结构:转载 2012-06-13 19:57:42 · 612 阅读 · 0 评论 -
Linux下创建文件、并往文件中写入数据的小程序
#include #include #include #include #include //创建文件void create_file(char *filename){if(creat(filename,0755){printf("create file %s failure!\n",filename);exit(EXIT_FAILURE);}e原创 2012-06-01 15:16:51 · 9302 阅读 · 1 评论 -
S_ISREG等几个常见的宏
来自百度文库:http://wenku.baidu.com/view/31777dc1d5bbfd0a795673b1.htmlstat函数讲解:表头文件: #include #include 定义函数: int stat(const char *file_name, struct stat *buf);函数说明: 通过文件名filename获取文件信息,并保存在buf所指的结原创 2012-06-03 16:25:53 · 13331 阅读 · 0 评论 -
linux下文件传输程序
//客户端#include#include#include#include#include#include//#include#include#include #include #include #define PORT 1234#define MAXDATASIZE 100int main(int argc,char *argv[])原创 2012-06-03 15:14:24 · 865 阅读 · 1 评论 -
用Unix的设计思想来应对多变的需求
转自酷壳 --陈浩 之前,@风枫峰 在“这是谁的错?”中说过开发团队对需求来者不拒,而@weidagang 也在“需求变更和IoC”中说过用IoC来最大程度地解决需求变更。今天我也想从Unix设计思想的角度来说说什么是好的软件设计,什么样的设计可以把需求变更对开发的影响降低。(注意:这并不能解决用户或是PM的无理需求,面对无理需求,需要仔细分析需求,而用技术的手段无法搞定这个事,但是可以减转载 2012-06-01 09:48:34 · 450 阅读 · 0 评论 -
linux文件编程
linux中文件编程可以使用两种方法:1.Linux系统调用 2.C语言库函数。系统调用是基于linux系统的,它不能跨系统使用。c语言库函数在各个系统都能使用。下面先介绍基于系统调用的文件编程。1.文件的创建.int creat(const char *filename,mode_t mode)filename:要创建的文件名(包含路径,缺省为当前路径)mode:转载 2012-06-01 10:52:12 · 347 阅读 · 0 评论 -
fd_set
select()机制中提供一fd_set的数据结构,实际上是一long类型的数组,每一个数组元素都能与一打开的文件句柄(不管是socket句柄,还是其他文件或命名管道或设备句柄)建立联系,建立联系的工作由程序员完成,当调用select()时,由内核根据IO状态修改fd_set的内容,由此来通知执行了select()的进程哪一socket或文件可读。 fd_set set;转载 2012-02-13 15:36:54 · 377 阅读 · 0 评论 -
TCP通信中,服务器端实现方式(SELECT)
我们在进行TCP通信时,当服务器端(监听一个端口)需要处理来自多个客户端的连接请求时,可以有三种方式:1.为每一个客户端的连接建立一个进程。2.为每个客户端的连接建立一个线程。3.采用SELECT函数,用单进程完成。 为每个来自客户端的连接建立一个进程或线程的方式实现较为简单,但是对于像嵌入式系统这样的环境来说,这两种方式开销较大。SEL转载 2012-02-14 09:44:58 · 455 阅读 · 0 评论 -
Setsockopt选项详解
有时候我们要控制套接字的行为(如修改缓冲区的大小),这个时候我们就要控制套接字的选项了. 以下资料均从网上收集得到setsockopt:设置套接口的选项。getsockopt 和 setsockopt获得套接口选项:int getsockopt ( int sockfd, int level, int optname, void * optval, sock转载 2011-12-02 10:41:08 · 828 阅读 · 0 评论 -
linux 线程 进程经典文章
进程是程 序在计算机上的一次执行活动。当你运行一个程序,你就启动了一个进程。显然,程序是 死的(静态的),进程是活的(动态的)。进程可以分为系统进程和用户进程。凡是用于完成操作系统的各种功能的进程就是系统进程,它们就是处于运行状态下的 操作系统本身;用户进程就是所有由你启动的进程。进程是操作系统进行资源分配的单位。 进程又被细化为线程,也就是一个进程下有多个能独立运行的更小的单位。转载 2011-10-08 14:37:06 · 711 阅读 · 0 评论 -
管道客户服务端程序
管道包括无名管道和有名管道(FIFO),前者只能用于父进程和子进程之间的通信,后者可用于运行同一系统中的任意两个进程间通信。注意:必须在系统调用fork()前调用pipe(),否则子进程将不会继承文件描述符(fd[0],fd[1]),否则,则是创建两个管道。#include #include #include #include #include #include #include原创 2012-05-25 21:36:39 · 754 阅读 · 0 评论