易截截图软件、单文件、免安装、纯绿色、仅160KB

linux socket学习笔记(第二章)


域和地址族
    有一个很恰当的比喻说明套接口编程,套接口就好比电话,而电话网中的电话号码就好像套接口地址。说明套接口可以用特定的地址来标示自己。并不是所有的套接口都需要地址,比如无名套接口就不需要地址,例如函数socketpair(2)就生成了一对互相可以连接但是却没有地址的套接口。书中比喻说就好像是冷战时期苏联和美国之间的热线电话一样,直接相连,不需要电话号码。
    域(domain),在socket中,不仅可以支持TCP/IP协议,也可以支持其他协议,socket中的参数domain的作用正在于此。回顾一下socketpair(2)函数的语法可以看到。
    #include <sys/types.h>
    #include <sysy/socket.h>
   
    int socketpair( int domain , int type , int protocol , int sv[2] );
    在socketpair(2)函数中,domain参数要么是AF_LOCAL,要么是AF_UNIX. 其实他们是等价的。AF_LOCAL的前缀AF表示地址族(address family),domain参数的用途就是说明函数是采用哪个地址族。之后还会出现PF_的宏,现在可以暂时认为是等价的。
    AF_LOCAL表示使用本地地址规则来生成地址,AF_INET表示使用IP地址规则来生成地址。BSD的解决方案提供了一种通用的地址结构如下:
    #include <sys/socket.h>
   
    struct sockaddr{
        sa_family_t sa_family ;         /* 地址族 */
        char  sa_data[14] ;               /* 地址数据 */
    };
    对于编程者来说,通用套接口本身没有什么用处,但是它为其他地址结构提供了一个重要的参考模型,比如所有的地址都要在结构中的同样位置定义sa_family成员,因为他决定了怎么翻译结构中包含地址信息的字节。
    生成本地地址AF_LOCAL或者AF_UNIX的地址的结构名是sockaddr_un.
    在Linux中,使用最普遍的地址族是AF_INET.具有IPv4套接口地址的套接口可以与TCP/IP上的其他主机进行通信。一下是C语言描述的结构sockadd


相关文档:

Linux驱动开发学习步骤

1. 学会写简单的makefile
    2. 编一应用程序,可以用makefile跑起来
    3. 学会写驱动的makefile
    4. 写一简单char驱动,makefile编译通过,可以insmod, lsmod, rmmod. 在驱动的init函数里打印hello world, insmod后应该能够通过dmesg看到输出。
  &n ......

linux驱动程序实例

本例是冯国进的 《嵌入式Linux 驱动程序设计从入门到精通》的第一个例子
感觉真是好书   强烈推荐
注释是deep_pro加的 转载请注明!我的特点是文不加点!
这个驱动是在内存中分配一个256字节的空间,供用户态应用程序读写。
先是头文件 demo.h
#ifndef _DEMO_H_
#define _DEMO_H_
#include <linux/ioct ......

Linux下core文件调试方法

在程序不寻常退出时,内核会在当前工作目录下生成一个core文件(是一个内存映像,同时加上调试信息)。使用gdb来查看core文件,可以指示出导致程序出错的代码所在文件和行数。
1.core文件的生成开关和大小限制
 1)使用ulimit -c命令可查看core文件的生成开关。若结果为0,则表示关闭了此功能,不会生成core文件。
......

linux中字符串的处理

st='abcd'
1.字符串长度
expr length $st 或者 ${#st}
2.取字符串的substring
expr substr "$var" startpos length 或者 ${var:m} ${var:m:len}
${var:m}中的m的取值从0到${#var}-1,其返回的是从第m个字符到最后的部分;例如echo ${st:1}的结果是'bcd'
expr substr "$var" startpos length 中的startpos取值范围是 ......
© 2009 ej38.com All Rights Reserved. 关于E健网联系我们 | 站点地图 | 赣ICP备09004571号