地址格式:

函数bind和getsockname使用通用数据类型:struct sockaddr*来指向socket地址。

#incude <sys/socket.h>

struct sockaddr {
short int sa_family,
char sa_data[]
}

sa_family 指的是地址格式,

sa_data[14] 则是真正的地址内容。地址数据和格式挂钩的,什么样的格式对应什么样的内容。长度也依赖于格式,所以有可能大于14个字节。这里给出的14是任意的。。。。

以AF_开头的符号名指定了地址格式,而PF_开头的符号名指定了相应的命名空间。

AF_LOCAL

  LOCAL指明了是本地地址,使用的是本地命名空间(PF_LOCAL)。

AF_UNIX

  等同于AF_LOCAL。尽管AF_LOCAL被POSIX.1g强制要求,事实上AF_UNIX更具移植性。

AF_FILE

  AF_LOCAL的另一个近义词

AF_INET

  指明了地址位于Internet命名空间之下。PF_INET为其命名空间。

AF_INET6

  与AF_INET相似,特指IPv6协议,命名空间为PF_INET6。

AF_UNSPEC

  指明不使用特定的地址格式,很少情况下用这种地址格式。命名空间为PF_UNSPEC(只是为了完整性,才整出这么一个命名空间。

为socket设置地址:

  通过bind函数将地址绑定给某个socket。

#include <sys/socket.h>
int bind (int socket, struct sockaddr *addr, socklen_t length)

读取socket地址:

  使用函数getsockname 来检查Internet socket的地址。

#include <sys/scoket.h>
int getsockname (int socket, struct sockaddr *addr, socklen_t *length-ptr)

地址和地址长度通过*addr和*length-ptr返回。通常来讲,我们针对命名空间使用合适的数据类型申请空间来存放地址,然后将其强制转化为sockaddr *类型。

SOCKET 地址的更多相关文章

  1. Linux网络编程-----Socket地址API

    (1) 通用socket地址 socket网络编程接口中表示socket地址的是结构体sockaddr,其定义如下: #include<bits/socket.h> struct sock ...

  2. 2. socket结构体——表示socket地址

    一.两种通用socket结构体 1. sockaddr struct sockaddr { sa_family_t sa_family; // 地址族 char sa_data[14]; // 存放s ...

  3. JAVA Socket地址绑定

    Socket常用有惨构造方法有如下: Socket(InetAddress address, int port) Socket(InetAddress address, int port, InetA ...

  4. 010-1 Socket地址族AddressFamily

    AddressFamily地址组成员 成员名称 说明 AppleTalk AppleTalk 地址. Atm 本机 ATM 服务地址. Banyan Banyan 地址. Ccitt 对于 CCITT ...

  5. UNIX网络编程——socket概述和字节序、地址转换函数

    一.什么是socket socket可以看成是用户进程与内核网络协议栈的编程接口.socket不仅可以用于本机的进程间通信,还可以用于网络上不同主机的进程间通信. socket API是一层抽象的网络 ...

  6. socket概述和字节序、地址转换函数

    一.什么是socket socket可以看成是用户进程与内核网络协议栈的编程接口. socket不仅可以用于本机的进程间通信,还可以用于网络上不同主机的进程间通信. socket API是一层抽象的网 ...

  7. 转:sock_ev——linux平台socket事件框架(uri地址的解析) .

    在第一篇中,已经说明,传递的socket地址采取以下形式: [cpp] view plaincopyprint?stream://192.168.2.10:8080   dgram://192.168 ...

  8. Linux Socket 原始套接字编程

    对于linux网络编程来说,可以简单的分为标准套接字编程和原始套接字编程,标准套接字主要就是应用层数据的传输,原始套接字则是可以获得不止是应用层的其他层不同协议的数据.与标准套接字相区别的主要是要开发 ...

  9. Linux下的C Socket编程 -- 简介与client端的处理

    Linux下的C Socket编程(一) 介绍 Socket是进程间通信的方式之一,是进程间的通信.这里说的进程并不一定是在同一台机器上也有可能是通过网络连接的不同机器上.只要他们之间建立起了sock ...

随机推荐

  1. Github 恶搞教程(一起『玩坏』自己的 Github 吧)

    最近在伯乐在线读到一篇趣文,<如何在 Github『正确』做贡献>,里面各种能人恶搞 Github 的『Public contributions』,下面截取几个小伙伴的战绩: 顺藤摸瓜,发 ...

  2. 对.Net系统架构改造的一点经验和教训

    如果你对项目管理.系统架构有兴趣,请加微信订阅号"softjg",加入这个PM.架构师的大家庭 在互联网行业,基于Unix/Linux的网站系统架构毫无疑问是当今主流的架构解决方案 ...

  3. 【测试】使用hr用户下的employees和departments表写一条SQL语句,(MG连接)

    SQL> select * from employees d, departments t where d.department_id=t.department_id; rows selecte ...

  4. matlab读取txt文档中的数据

    ps:文件中只有数字! format long fp=fopen('文件路径','打开方式(r)') [num,count]=fscnaf(fp,'%f')

  5. redis错误总结

    1.同步错误.不停重试一直不成功 Full resync from master: e51165e2868c541e28134a287f9bfe36372bae34:80575961684 MASTE ...

  6. SQL增加,删除,更改表中字段

    1. 向表中添加新的字段 alter  table  table_name  add  column_name  varchar2(20) not null 2. 删除表中的一个字段 delete t ...

  7. 华为OJ平台——超长正整数相加

    题目描述: 请设计一个算法完成两个超长正整数的加法. 输入 输入两个字符串数字 输出 输出相加后的结果,string型 样例输入 99999999999999999999999999999999999 ...

  8. IBM Tivoli NetView网管软件实战

    广大网络管理者需要一款包括网络监控故障处理的一个集成网络管理平台,本文根据作者多年实践提出的基于IBM Tivoli Netview的综合网络管理平台,IBM Tivoli与Cisco一直保持着良好的 ...

  9. flask-admin

    初始化 class Admin(app=None, name=None, url=None, subdomain=None, index_view=None, translations_path=No ...

  10. c# 利用 两个TREEVIEW控件完成TEENODE的鼠标拖动操作

    功能说明: 我们有两个TREEVIEW控件——TREEVIEW1,TREEVIEW2.Treeview1内有三个NODE,Treeview2内有三个NODE.将Treeview1内的NODE拖动到Tr ...