Socket的地址结构

朱朱2015A

朱朱2015A

2016-02-19 12:35

下面,图老师小编带您去了解一下Socket的地址结构,生活就是不断的发现新事物,get新技能~

  在建立socket通信的过程中地址起着很要害的作用,在设计TCP/IP网络程序时,必须对 socket 的地址结构有清楚的熟悉。
  TCP/IP 的地址数据结构。
  
  strUCt sockaddr {
  
  u_short safamily;/*地址族,AF_XXX*/
  
  char sa_data[14];/*14字节的特定协议地址*/
  
  }
  
  其中14字节的sa_data随协议而不同。在TCP/IP协议族中,地址数据结构为:
  
  struct in_addr{
  
  u_long s_addr;/*32比特的IP地址,网络字节顺序 */
  
  };
  
  struct sockaddr_in{
  
  short sin_family; /*AF_INET*/
  
  u_short sin_short; /*16比特的端口号,网络字节顺序*/
  
  struct in_addr sin_addr; /*32比特的IP地址,网络字节顺序*/
  
  char sin_zero[8]; /*未用*/
  
  }
  
  网络字节顺序是TCP/IP中规定好的一种数据表示格式,它与具体的CPU类型、操作系统等无关,从而可以保证数据在不同主机之间传输时能够被正确解释。由主机字节顺序转换为网络字节顺序的两个函数如下:htons():将16比特的主机字节顺序数据转换为网络字节顺序htonl():将32比特的主机字节顺序数据转换为网络字节顺序与此相对应的将网络字节顺序转换为主机字节顺序的函数为:
  
  ntohs():将16比特的网络字节顺序数据转换为主机字节顺序ntohl():将32比特的网络字节顺序数据转换为主机字节顺序由于各种socket地址结构的长度相差很大,TCP/IP地址族的地址长度为8字节,XNS地址为14字节,UNIX地址不定,最长可达110字节,所以无法以一种统一的格式定义它们,需要在bind()调用中明确指定socket地址的长度。
  
  当bind()参数无效或端口已被其他程序所用时,函数返回-1,表明本次socket命名失败。
展开更多 50%)
分享

猜你喜欢

Socket的地址结构

编程语言 网络编程
Socket的地址结构

Java中的Socket编程

编程语言 网络编程
Java中的Socket编程

s8lol主宰符文怎么配

英雄联盟 网络游戏
s8lol主宰符文怎么配

Java Socket编程

编程语言 网络编程
Java Socket编程

socket编程原理

编程语言 网络编程
socket编程原理

lol偷钱流符文搭配推荐

英雄联盟 网络游戏
lol偷钱流符文搭配推荐

Beej的网络socket编程指南

编程语言 网络编程
Beej的网络socket编程指南

java socket 详细介绍

编程语言 网络编程
java socket 详细介绍

lolAD刺客新符文搭配推荐

英雄联盟
lolAD刺客新符文搭配推荐

The Standard C Library for Linux:stdlib.h

The Standard C Library for Linux:stdlib.h

在DBGrid中实现Copy、Paste功能

在DBGrid中实现Copy、Paste功能
下拉加载更多内容 ↓