sockaddr结构体

struct  sockaddr{

  sa_family_t  sa_family; //地址族,最常用的是"AF_INET"(IPV4)和"AF_INET6"(IPV6); 

  char  sa_data[14];      //包含套接字中的目标地址和端口信息;

};

sockaddr的缺陷:sa_data把目标地址和端口信息混在一起了

sockaddr_in 结构体
sockaddr_in结构体解决了sockaddr的缺陷,把port和addr 分开储存在两个变量中

struct  sockaddr_in/  struct  sockaddr_in6结构体

struct  sockaddr_in{

  sa_family_t   sin_family;  //地址族,常用AF_INET

  uint16_t         sin_port;     //16位TCP/UDP端口号

  struct  in_addr  sin_addr;    //32位IP地址

  cha         sin_zero[8]   //不使用

};

struct  in_addr{

  in_addr_t    s_addr;      //32位IPV4地址

}

struct sockaddr_in6 {

   sa_family_t     sin6_family; /* AF_INET6 */

   in_port_t      sin6_port; /* port number */

   uint32_t       sin6_flowinfo; /* IPv6 flow information */

   struct in6_addr    sin6_addr; /* IPv6 address */

   uint32_t        sin6_scope_id; /* Scope ID (new in 2.4) */

};

struct in6_addr {

  unsigned  char s6_addr[16]; /* IPv6 address */

};

struct  sockaddr_in6相关详见 :http://man7.org/linux/man-pages/man7/ipv6.7.html

初始化和赋值:

IPV4

struct sockaddr_in ina;
bzero(&ina,sizeof(ina));
ina.sin_family=AF_INET;
ina.sin_port=htons(23);
ina.sin_addr.s_addr = inet_addr("132.241.5.10");

IPV4相关例子参考 http://www.cnblogs.com/huqian23456/archive/2011/02/22/1961822.html

IPV6

const   ipv6_addr = "::1";    //IPV6地址

struct   sockaddr saddr;
memset(&saddr, 0, sizeof(saddr));  /  /初始化结构体
saddr.sa_family = AF_INET6;
inet_pton(AF_INET6,ipv6_addr,saddr.sa_data);    //设置地址

struct sockaddr_in6 from_addr;
bzero(&from_addr,sizeof(from_addr));    //初始化结构体
from_addr.sin6_family = AF_INET6;   //设置地址家族
from_addr.sin6_port = htons(800);    //设置端口
inet_pton(AF_INET6,ipv6_addr,from_addr.sin6_addr.s6_addr );   //设置地址

inet_pton inet_ntop 地址转换相关详见 https://www.cnblogs.com/s7vens/archive/2011/12/12/2284964.html

C语言socket编程----struct sockaddr 和struct sockaddr_in介绍和初始化的更多相关文章

  1. C语言socket编程

    建议先去看一下思路 真的写的很不错呦~ 思路参考博客:https://www.cnblogs.com/renfanzi/p/5713054.html linux c语言socket编程代码(单一服务端 ...

  2. 结构体struct sockaddr_in, struct sockaddr,struct in_addr

    一.结构体 struct sockaddr_in,  struct sockaddr,  struct in_addr struct sockaddr_in,  struct sockaddr,str ...

  3. 计算机网络|C语言Socket编程,实现两个程序间的通信

    C语言Socket编程,实现两个程序间的通信 server和client通信流程图 在mooc上找到的,使用Socket客户端client和服务端server通信的流程图

  4. [转]C语言SOCKET编程指南

    1.介绍 Socket编程让你沮丧吗?从man pages中很难得到有用的信息吗?你想跟上时代去编Internet相关的程序,但是为你在调用 connect() 前的bind() 的结构而不知所措?等 ...

  5. C语言SOCKET编程指南

    1.介绍 Socket 编程让你沮丧吗?从man pages中很难得到有用的信息吗?你想跟上时代去编Internet相关的程序,但是为你在调用 connect() 前的bind() 的结构而不知所措? ...

  6. C语言socket编程--每日签到

    前几天写了个python的每日签到,你运行还得借助crontab,很是不爽.....正好前几天看了个关于c编写daemon进程,加上自己那点可怜的socket知识,于是我们重操旧页,C语言版的每日签到 ...

  7. C语言Socket编程(计算机网络作业)

    最近我计算机网络课程要做作业了,没办法跟着老师一步一步的写C语言的代码,使用的计算就是Socket通信发送消息:代码实现的功能很简单,客户端向服务器端发送消息,服务器端接收客户端发来的消息,并且输出显 ...

  8. 转:struct sockaddr与struct sockaddr_in ,struct sockaddr_un的区别和联系

    在linux环境下,结构体struct sockaddr在/usr/include/linux/socket.h中定义,具体如下:typedef unsigned short sa_family_t; ...

  9. 多种语言socket编程集锦—win32

    原文 http://www.blogjava.net/huyi2006/articles/263831.html 借此地方整理以下socket编程的多种语言的实现,socket可以跨平台的通信,因此多 ...

随机推荐

  1. 原生js操作类名

  2. 为什么我引用bootstrap的font-awesome的图标不出来,就单单是一个HTML里面引用的?

    原文地址:https://www.zhihu.com/question/37015526?sort=created 24 个回答 知乎用户     我来猜猜: 1.检查字体路径是否加载对了2.font ...

  3. Web Worker 案例

    什么是 Web Worker? 当在 HTML 页面中执行脚本时,页面的状态是不可响应的,直到脚本已完成. web worker 是运行在后台的 JavaScript,独立于其他脚本,不会影响页面的性 ...

  4. 《STL详解》读书笔记

    vector 向量容器v.insert(v.begin(), num);//增加v.erase(v.begin(), v.end()); //擦除v.erase(v.begin());reverse( ...

  5. PIE SDK定向滤波

    1. 算法功能简介 定向滤波又称为匹配滤波,是通过一定尺寸的方向模板对图像进行卷积计算,并以卷积值代替各像元点灰度值,强调的是某一些方向的地面形迹,例如水系.线性影像等. 方向模板是一个各元素大小按照 ...

  6. 设计模式学习总结(五)创建者模式(Builder)

    创建者模式,主要针对某些产品有类似的生产步骤,且有需要有先后顺序的进行各个部件的生成. 一.示例展示: 通过学习及总结,以下是我完成的创建者模式的示例: 1.创建产品类:Laptop public c ...

  7. (转)SSH批量分发管理&非交互式expect

    目录 1 SSH批量分发管理 1.1 测试环境 1.2 批量管理步骤 1.3 批量分发管理实例 1.3.1 利用sudo提权来实现没有权限的用户拷贝 1.3.2 利用sudo提权开发管理脚本 1.3. ...

  8. Python 字符串 (str)

    作者博文地址:https://www.cnblogs.com/liu-shuai/ Python字符串的常用操作包括以下但不限于以下操作: 1 字符串的替换.删除.切片.复制.连接.比较.查找.分割等 ...

  9. gulp优化hexo方法

    gulp通过对站点使用的静态资源进行压缩,来优化网站的访问速度. 首先安装gulp以及所需要的模块: npm install gulp -g npm install gulp-htmlclean gu ...

  10. redis安装配置远程连接

    一.安装redis linux上直接yum安装 yum install redis windows版本下载地址 https://github.com/ServiceStack/redis-window ...