- 浏览: 770419 次
- 性别:
- 来自: 大连
文章分类
- 全部博客 (417)
- ASP.NET MVC (18)
- WEB基础 (24)
- 数据库 (69)
- iPhone (20)
- JQuery (3)
- Android (21)
- UML (8)
- C# (32)
- 移动技术 (19)
- 条码/RFID (6)
- MAC (8)
- VSS/SVN (6)
- 开卷有益 (4)
- 应用软件 (1)
- 软件工程 (1)
- java/Eclipse/tomcat (61)
- 英语学习 (2)
- 综合 (16)
- SharePoint (7)
- linux (42)
- Solaris/Unix (38)
- weblogic (12)
- c/c++ (42)
- 云 (1)
- sqlite (1)
- FTp (2)
- 项目管理 (2)
- webservice (1)
- apache (4)
- javascript (3)
- Spring/Struts/Mybatis/Hibernate (4)
- 航空业务 (1)
- 测试 (6)
- BPM (1)
最新评论
-
dashengkeji:
1a64f39292ebf4b4bed41d9d6b21ee7 ...
使用POI生成Excel文件,可以自动调整excel列宽等(转) -
zi_wu_xian:
PageOffice操作excel也可以设置表格的行高列宽,并 ...
使用POI生成Excel文件,可以自动调整excel列宽等(转) -
wanggang0321:
亲,我在pptx(office2007以上版本)转pdf的时候 ...
JODConverter]word转pdf心得分享(转) -
xiejanee:
楼主:你好!我想请问下 你在代码中用DOMDocument* ...
Xerces-C++学习之——查询修改XML文档 (转)
转自:http://www.cnblogs.com/hnrainll/archive/2011/04/24/2026432.html
struct sockaddr与struct sockaddr_in ,struct sockaddr_un的区别和联系
在linux环境下,结构体struct sockaddr在/usr/include/linux/socket.h中定义,具体如下:
typedef unsigned short sa_family_t;
struct sockaddr {
sa_family_t sa_family; /* address family, AF_xxx */
char sa_data[14]; /* 14 bytes of protocol address */
在linux环境下,结构体struct sockaddr_in在/usr/include/netinet/in.h中定义,具体如下:
/* Structure describing an Internet socket address. */
struct sockaddr_in
{
__SOCKADDR_COMMON (sin_);
in_port_t sin_port; /* Port number. */
struct in_addr sin_addr; /* Internet address. */
/* Pad to size of `struct sockaddr'. */
unsigned char sin_zero[sizeof (struct sockaddr) -
__SOCKADDR_COMMON_SIZE -
sizeof (in_port_t) -
sizeof (struct in_addr)];
/* 字符数组sin_zero[8]的存在是为了保证结构体struct sockaddr_in的大小和结构体struct sockaddr的大小相等 */
};
struct sockaddr是通用的套接字地址,而struct sockaddr_in则是internet环境下套接字的地址形式,二者长度一样,都是16个字节。二者是并列结构,指向sockaddr_in结构的指针也可以指向sockaddr。一般情况下,需要把sockaddr_in结构强制转换成sockaddr结构再传入系统调用函数中。
下面是struct sockaddr_in中用到两个数据类型,具体定义如下:
/* Type to represent a port. */
typedef uint16_t in_port_t;
struct in_addr其实就是32位IP地址
struct in_addr {
unsigned long s_addr;
};
BSD网络软件中包含了两个函数,用来在二进制地址格式和点分十进制字符串格式之间相互转换,但是这两个函数仅仅支持IPv4。
in_addr_t inet_addr(const char *cp);
char *inet_ntoa(struct in_addr in);
功能相似的两个函数同时支持IPv4和IPv6
const char *inet_ntop(int domain, const void *addr, char *str, socklen_t size);
int inet_pton(int domain, const char *str, void *addr);
通常的用法是:
int sockfd;
struct sockaddr_in my_addr;
sockfd = socket(AF_INET, SOCK_STREAM, 0);
my_addr.sin_family = AF_INET; /* 主机字节序 */
my_addr.sin_port = htons(MYPORT); /* short, 网络字节序 */
my_addr.sin_addr.s_addr = inet_addr("192.168.0.1");
bzero(&(my_addr.sin_zero), 8); /* zero the rest of the struct */
//memset(&my_addr.sin_zero, 0, 8);
bind(sockfd, (struct sockaddr *)&my_addr, sizeof(struct sockaddr));
#define UNIX_PATH_MAX 108
struct sockaddr_un {
sa_family_t sun_family; /*PF_UNIX或AF_UNIX */
char sun_path[UNIX_PATH_MAX]; /* 路径名 */
};
struct sockaddr结构类型是用来保存socket信息的:
struct sockaddr {
unsigned short sa_family; /* 地址族, AF_xxx */——地址的格式
char sa_data[14]; /* 14 字节的协议地址 */——地址值(IP和端口号)
};
Sockfd是调用socket函数返回的socket描述符,my_addr是一个指向包含有本机IP地址及端口号等信息的sockaddr类型的指针;addrlen常被设置为sizeof(struct sockaddr)。
struct sockaddr结构类型是用来保存socket信息的:
struct sockaddr {
unsigned short sa_family; /* 地址族, AF_xxx */
char sa_data[14]; /* 14 字节的协议地址 */
};
sa_family一般为AF_INET,代表Internet(TCP/IP)地址族;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的指针;或者相反。
你只要记住,填值的时候使用sockaddr_in结构,而作为函数的
参数传入的时候转换成sockaddr结构就行了,毕竟都是16个字符
长。
struct in_addr {
union {
struct { u_char s_b1,s_b2,s_b3,s_b4; } S_un_b;
struct { u_short s_w1,s_w2; } S_un_w;
u_long S_addr;
} S_un };
发表评论
-
项目中业务的一致性,完整性
2013-11-28 15:17 0a.一致性:A系统和主机都保留一份座位图数据,就容易导致两 ... -
excel根据列值调整行颜色
2013-04-23 16:43 1598http://www.360doc.com/content/1 ... -
jenkins
2013-04-15 10:54 800http://www.chineselinuxunivers ... -
日常note
2013-04-10 14:09 01.有时需要打开cmd窗口,来运行诸如bat程序,但是有时候 ... -
论坛id
2012-07-09 11:29 0bbs.chinaunix.net ---unixfanss ... -
Intel-VT 技术详解
2012-07-06 14:41 1577Intel-VT 技术详解 ... -
号码段
2012-06-29 11:24 910中国3G号码段:中国联通185,186;中国移动188,187 ... -
【转】使用xmanager4.0 远程桌面管理redhat 5.5
2012-05-11 15:47 1894Xmanager是一个远程连接工具,里面最常用的有Xbrows ... -
Windows Server 2008 R2:创建和加入域
2012-04-23 09:27 2410转自:http://www.ithov.com/s ... -
输出到控制台
2012-03-26 17:20 862c#:Console.Out.WriteLine(" ... -
汉字转换成拼音的类(转)
2012-02-27 16:41 62108引用地址: http://blog.csdn.net/huig ... -
加密解密(转)
2012-02-24 13:37 1105保护好数据 了解加密技术的具体内容_普通__加密解密_eNet ... -
Windows下安装Redmine(转)
2011-12-26 11:00 2479转自:http://www.cnblogs.com ... -
JODConverter]word转pdf心得分享(转)
2011-12-19 14:23 7756官方网站: http://www.a ... -
类似Windows Search的文件搜索系统
2011-11-23 09:42 1287转自:http://www.cnblogs.com/wu ... -
操作PDF文档功能的相关开源项目探索—iTextSharp 和PDFBox
2011-11-23 09:40 1951转自www.th7.cn第七城市 操作 PDF 文档功 ... -
处理并发
2011-09-08 15:04 0<!-- google_ad_section_star ... -
远程桌面
2011-07-04 12:30 0mstsc->本地资源->详细信息->勾选驱 ... -
windows常用快捷命令
2011-07-04 09:22 1130appwiz.cpl打开添加删除程序calc启动计算器conf ... -
ASCII码表
2011-06-10 09:40 1039字号:大 中 小 八进制 ...
相关推荐
之前在网上看过好多关于mysql.sock不见的问题,并没有关注这个东西存在的意义,直到自己的mysql也出现了相同的问题。让人纠结了一把…… 代码如下:zhouqian@zhou:~$ mysqlERROR 2002 (HY000): Can’t connect to ...
c#编的 Sock 通讯服务端程序代码,欢迎下载
推荐sock5客户端工具 proxycap这个比较好用
用SOCK_RAW编写的ping程序 C++语言 只有简单的ping功能
文档非常详细的介绍了sock5服务器的搭建过程,并对搭建过程中的细节进行了详细说明
1, Richard Stevens used a program called "sock" to demonstrate the many properties of TCP/IP. Unfortunately, the book only speaks about how to use the program but does not point to a site for ...
sock5代理服务
TCPIP详解SOCK程序源码 TCPIP详解SOCK程序源码 TCPIP详解SOCK程序源码
基于UDP的简单SOCK通信,只是一个简单的尝试,方便初学者看看而己
linux_sock_raw原始套接字编程
raw_sock源始套接字和raw_sock编程说明
linux平台下sock的例子,我入门的例子
详细描述SOCK5代理协议
SOCK5代理 亲测支持QQ代理, 内含sock5代理服务端, 测试客户端两个工程 SOCK5代理 亲测支持QQ代理, 内含sock5代理服务端, 测试客户端两个工程
详细描述sock5和HTTP代理有什么不同
sock_raw参考资料学习参考和linux char字符设备建立方法
sock_http相关的类
windows sock server.for sock server.1~500 client connect server.
SOCK判断是否联网模块.rar
1.网络通信原理和协议结构 1.1网络通信原理 1.2网络七层结构介绍 1.3常见tcp/ip协议结构定义 2.SOCK 详解 2.1网络理论/结构 2.2IP 处理 2.3SOCK套接字 2.4SOCK 函数 3.协议通信 ... 4.SOCK应用 ...