设为首页 加入收藏

TOP

Socket编程相关数据类型定义(一)
2012-11-04 15:13:31 】 浏览:890
Tags:Socket 编程 相关 数据 类型 定义
  计算机数据存储有两种字节优先顺序:高位字节优先和低位字节优先。Internet上数据以高位字节优先顺序在网络上传输,所以对于在内部是以低位字节优先方式存储数据的机器,在Internet上传输数据时就需要进行转换。



  我们要讨论的第一个结构类型是:struct sockaddr,该类型是用来保存socket信息的:

  struct sockaddr {
  unsigned short sa_family; /* 地址族, AF_xxx */
  char sa_data[14]; /* 14 字节的协议地址 */ };

  sa_family一般为AF_INET;sa_data则包含该socket的IP地址和端口号。

  另外还有一种结构类型:

  struct sockaddr_in {
   short int sin_family; /* 地址族 */
   unsigned short int sin_port; /* 端口号 */
   struct in_addr sin_addr; /* IP地址 */
   unsigned char sin_zero[8]; /* 填充0 以保持与struct sockaddr同样大小 */
  };

  这个结构使用更为方便。sin_zero(它用来将sockaddr_in结构填充到与struct sockaddr同样的长度)应该用bzero()或memset()函数将其置为零。指向sockaddr_in 的指针和指向sockaddr的指针可以相互转换,这意味着如果一个函数所需参数类型是sockaddr时,你可以在函数调用的时候将一个指向sockaddr_in的指针转换为指向sockaddr的指针;或者相反。sin_family通常被赋AF_INET;sin_port和sin_addr应该转换成为网络字节优先顺序;而sin_addr则不需要转换。

  我们下面讨论几个字节顺序转换函数:

  htons()--"Host to Network Short" ; htonl()--"Host to Network Long"
  ntohs()--"Network to Host Short" ; ntohl()--"Network to Host Long"

  在这里, h表示"host" ,n表示"network",s 表示"short",l表示 "long"。

  打开socket 描述符、建立绑定并建立连接
  socket函数原型为:
  int socket(int domain, int type, int protocol);

  domain参数指定socket的类型:SOCK_STREAM 或SOCK_DGRAM;protocol通常赋值“0”。Socket()调用返回一个整型socket描述符,你可以在后面的调用使用它。

  一旦通过socket调用返回一个socket描述符,你应该将该socket与你本机上的一个端口相关联(往往当你在设计服务器端程序时需要调用该函数。随后你就可以在该端口监听服务请求;而客户端一般无须调用该函数)。

首页 上一页 1 2 下一页 尾页 1/2/2
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇DirectShow编程捕捉WDM与VFW 下一篇COM+ 管理:了解组件服务管理工具

最新文章

热门文章

Hot 文章

Python

C 语言

C++基础

大数据基础

linux编程基础

C/C++面试题目