`
waret
  • 浏览: 139692 次
  • 性别: Icon_minigender_1
  • 来自: 天津
文章分类
社区版块
存档分类
最新评论

AF_INET == PF_INET

阅读更多

    在写网络程序的时候,建立TCP socket:
sock = socket(PF_INET, SOCK_STREAM, 0);
    然后在绑定本地地址或连接远程地址时需要初始化sockaddr_in结构,其中指定address family时一般设置为AF_INET,即使用IP。

相关头文件中的定义:
    AF = Address Family
    PF = Protocol Family
    AF_INET = PF_INET

    所以在windows中AF_INET与PF_INET完全一样. 而在Unix/Linux系统中,在不同的版本中这两者有微小差别. 对于BSD, 是AF, 对于POSIX是PF. 理论上建立socket时是指定协议,应该用PF_xxxx,设置地址时应该用AF_xxxx。当然AF_INET和PF_INET的值是相同的,混用也不会有太大的问题。

    在函数socketpair与socket的domain参数中有AF_UNIX,AF_LOCAL,AF_INET,PF_UNIX,PF_LOCAL,PF_INET. 这几个参数有AF_UNIX=AF_LOCAL, PF_UNIX=PF_LOCAL, AF_LOCAL=PF_LOCAL, AF_INET=PF_INET.

建议:
    对于socketpair与socket的domain参数,使用PF_LOCAL系列, 而在初始化套接口地址结构时,则使用AF_LOCAL. 例如:
    z = socket(PF_LOCAL, SOCK_STREAM, 0);
    adr_unix.sin_family = AF_LOCAL;

分享到:
评论

相关推荐

    C例子:AF_INET域数据报套接字通信

    在C中,创建一个数据报套接字需要调用`socket()`函数,指定`PF_INET`(或`AF_INET`)域和`SOCK_DGRAM`类型,这表示我们将使用UDP协议。接着,服务器需要绑定到一个特定的IP地址和端口号,通过`bind()`函数完成。在AF...

    Linux-socket-TCP-ClientServer.zip_TCP socket_linux socket_linux

    inet_pton(AF_INET, SERVER_IP, &server.sin_addr); // 将服务器IP转换为网络字节序 server.sin_port = htons(PORT); connect(socket_desc, (struct sockaddr *)&server, sizeof(server)); ``` 数据传输: 6. 使用...

    udp.rar_UDP_udp linux

    对于UDP,我们需要指定`PF_INET`(表示IPv4)作为协议族,`SOCK_DGRAM`作为Socket类型。 ```c int server_socket = socket(PF_INET, SOCK_DGRAM, 0); ``` 2. 绑定地址:使用`bind()`函数将Socket与特定的IP地址...

    [UNIX系统管理高手].Perl.Socket.API

    - `gethostbyaddr($binary, AF_INET)`: 根据二进制格式的IP地址获取其主机名。 - `getservbyname($service, $protocol)`: 根据服务名和服务类型获取端口号。 示例代码: ```perl my $ip = '127.0.0.1'; my $binary ...

    bp_ioctl.rar_PF-BP_family

    1. **PF_INET6与AF_INET6的区别**:PF是对协议族的总称,而AF是具体的地址家族,两者在socket编程中都是为了标识不同的通信协议,AF_INET6是PF_INET6的一个实例。 2. **IPv6地址结构**:IPv6地址由128位组成,通常...

    9.3 一个Socket程序实例.docx

    server.sin_family = PF_INET; server.sin_port = htons(PORT); server.sin_addr.s_addr = inet_addr(SERVER_ADDRESS); connect(sClient, (struct sockaddr *)&server, sizeof(SOCKADDR_IN)); char szMessage...

    linux网络编程学习笔记

    domain:说明我们网络程序所在的主机采用的通讯协族(AF_UNIX 和AF_INET 等). AF_UN IX 只能够用于单一的 Unix 系统进程间通信,而 AF_INET 是针对Internet的,因而可以允许在 远程 主机之间通信(当我们 man socket ...

    socket编程之udp连接代码

    然后,使用`socket()`函数创建一个Socket描述符,指定协议族(PF_INET)和类型(SOCK_DGRAM,表示UDP)。例如: ```c int socket_fd = socket(PF_INET, SOCK_DGRAM, 0); ``` 服务器端的代码通常包括以下几个步骤:...

    Windows Socket API 使用经验.rar_socket_windows_windows api socket_wi

    - **地址族(Address Family)**: 如PF_INET对应于IP地址,定义了网络地址的格式。 - **类型(Socket Type)**: 如SOCK_STREAM表示面向连接的TCP,SOCK_DGRAM表示无连接的UDP。 2. **创建Socket** 创建Socket...

    经由UNIX域套接字传送文件描述符所涉及的相关知识(自己整理)

    例如,在Windows中`AF_INET`和`PF_INET`表示相同的意思,而在UNIX/Linux系统中,`AF`和`PF`可能有所区别。对于UNIX域套接字,推荐使用`PF_LOCAL`系列作为`socket()`函数的`domain`参数,而在初始化套接字地址结构时...

    udp_test.zip_Programming with C_linux UDP

    server_addr.sin_family = AF_INET; server_addr.sin_port = htons(PORT_NUMBER); // PORT_NUMBER是你想要监听的端口 server_addr.sin_addr.s_addr = INADDR_ANY; ``` 3. **bind()**: 将创建的套接字与本地地址关联...

    socket编程实例

    - `domain`指定所使用的协议族,通常为`PF_INET`表示IPv4。 - `type`指定Socket类型,如`SOCK_STREAM`(流式套接字,基于TCP)或`SOCK_DGRAM`(数据报套接字,基于UDP)。 - `protocol`通常设置为0,表示使用默认...

    linux下socket和fork结合使用的例子

    server_addr.sin_family = AF_INET; server_addr.sin_port = htons(SERVER_PORT); server_addr.sin_addr.s_addr = INADDR_ANY; // 任何可用的IP地址 ``` 3. **绑定地址**:使用`bind()`函数将套接字与地址关联。 `...

    perl socket编程笔记

    域类型可以为 AF_INET 或 PF_INET 或 AF_INET6;数据类型通常有两种:SOCK_STREAM(字节流套接口)和 SOCK_DGRAM(数据报套接口);协议类型可以用协议号代替,也可以用 getprotobyname 函数来获取。 例如: ...

    UDP原理探究1

    sock = socket(PF_INET, SOCK_DGRAM, 0); if(sock == -1){ error_handling("socket error"); } memset(&my_adr, 0, sizeof(my_adr)); my_adr.sin_family = AF_INET; my_adr.sin_addr.s_addr = htonl(INADDR_...

    Linux UDP服务器与客户端

    server_addr.sin_family = AF_INET; server_addr.sin_port = htons(SERVER_PORT); // 端口号 server_addr.sin_addr.s_addr = INADDR_ANY; // 绑定所有可用IP ``` 3. **绑定套接字**:服务器需要使用`bind()`...

    udp.rar_UDP 网络开发板

    2. **创建UDP套接字**:使用`socket()`函数创建一个UDP套接字,指定协议类型为`PF_INET`,协议族为`SOCK_DGRAM`。 3. **绑定端口**:使用`bind()`函数将创建的套接字与特定的IP地址和端口号绑定,这样发送和接收的...

    基于LINUX的UDP通信

    创建UDP套接字需要调用`socket()`函数,参数指定为`PF_INET`(表示IPv4)和`SOCK_DGRAM`(表示UDP)。接着,使用`bind()`函数绑定本地地址和端口,以便接收数据。地址结构`struct sockaddr_in`包含了IP地址和端口号...

    socket应用 简单的实现客户端与服务端交流

    - **创建Socket**:调用`socket()`函数创建一个Socket描述符,指定协议类型为TCP(`AF_INET`或`AF_INET6`),协议族为`PF_INET`或`PF_INET6`。 - **绑定地址**:使用`bind()`函数将Socket与一个特定的IP地址和端口...

Global site tag (gtag.js) - Google Analytics