Socket的地址结构

2016-02-19 12:35 3 1 收藏

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

【 tulaoshi.com - 编程语言 】


  在建立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命名失败。

来源:http://www.tulaoshi.com/n/20160219/1601233.html

延伸阅读
System.Sockes命名空间了实现 Berkeley 套接字接口。通过这个类,我们可以实现网络计算机之间的消息传输和发送。而在我下面要讨论的这个议题里,我们将讨论的是用套接字实现文件的传输.这种方法有别于FTP协议实现的的文件传输方法,利用ftp的方法需要一个专门的服务器和客户端,无疑于我们要实现的点对点的文件传输太为复杂了一些。在这里,我们实...
墙体砌体结构的历史 砌体结构是最古老的一种建筑结构。我国的砌体结构有着悠久的历史和辉煌的纪录。在历史上有举世闻名的万里长城,它是两千多年前用“秦砖汉瓦”建造的世界上最伟大的砌体工程之一;建于北魏时期的河南登封嵩岳寺塔为高40米的砖砌密檐式塔。 建于隋大业年问的河北赵县安济桥,净跨37.37米,全长50.82米,宽约9米,拱高7.2...
随着计算机网络化的深入,计算机网络编程在程序设计的过程中变得日益重要。许多文章都曾经介绍过用VC++进行Socket编程的方法。但由于都是直接利用动态连接库wsock32.dll进行操作,实现比较繁琐。其实,VC++的MFC类库中提供了CAsyncSocket这样一个套接字类,用它来实现Socket编程,是非常方便的。 客户端 创建一个Dialog Based项...
标签: 电脑入门
在校园网络中,最方便的捣乱方法就是盗用别人的IP地址,被盗用IP地址的计算机不仅不能正常使用校园网络,而且还会频繁出现IP地址被占用的提示对话框,给校园网络安全和用户应用带来极大的隐患。捆绑IP地址和MAC地址就能有效地避免这种现象。 何为MAC地址 网卡在使用中有两类地址,一类是大家都熟悉的IP地址,另一类就是MAC地址,即网卡的物理...

经验教程

411

收藏

21
微博分享 QQ分享 QQ空间 手机页面 收藏网站 回到头部