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
相关文档:
1. 学会写简单的makefile
2. 编一应用程序,可以用makefile跑起来
3. 学会写驱动的makefile
4. 写一简单char驱动,makefile编译通过,可以insmod, lsmod, rmmod. 在驱动的init函数里打印hello world, insmod后应该能够通过dmesg看到输出。
&n ......
DBA:Linux
在 Linux x86 上安装 Oracle RAC 10g
作者:John Smiley
了解在 Red Hat Enterprise Linux 或 Novell SUSE Enterprise Linux 上从头安装 Oracle RAC 10g 的基础知识(仅用于评估)
目录
概述
背景
第 1 部分: 安装 Linux
第 2 部分: 为 Oracle 配置 Linux
第 3 部分: 准备共享磁盘
第 4 部分: ......
接触Linux也是很久的事情了,不过自我感觉却从来没有揭开过它的真面纱。从我工作以来到现在,几乎总会用到linux或在linux系统上进行工作,也一直想把linux搞懂。但是,由于总感觉Linux的庞大,英文资料难以阅读,加上自身非常的懒散,因此几次下定决心,最终还是不了了之吧。 ......
Linux下查看支持的信号列表:
~$ kill -l
1) SIGHUP 2) SIGINT 3) SIGQUIT 4) SIGILL
5) SIGTRAP 6) SIGABRT 7) SIGBUS 8) SIGFPE
9) SIGKILL 10) SIGUSR1 11) SIGSEGV 12) SIGUSR2
13) SIGPIPE 14) SIGALRM 15) SIGTERM 17) SIGCHLD
18) SIGCONT 19) SIGSTOP 20) SIGTSTP 21) SIGTTIN
22) SIGTTOU 23) SIGUR ......
TFTP是用来下载远程文件的最简单网络协议,它基于UDP协议而实现。嵌入式linux的tftp开发环境包括两个方面:一是嵌入式linux宿主机的 tftp-server支持,二是嵌入式linux目标机的tftp-client支持。因为u-boot本身内置支持tftp-client,所以嵌入式目标机就不用配置了。下面就详细介绍一下linux宿主机tftp-server的安装配置。
......