网络编程学习_socket辅助函数(一)
2014-01-08 00:19
218 查看
本文为unp第三章学习笔记
一,ipv4地址结构:
其中sin_zero没有用到,不过通常将整个struct 用memset置0
sin_family = AF_INET (IPv4)
sin_port 为网络字节,需要用htons转一下
sin_addr.s_addr需要用地址转换函数inet_addr转换
一般来说,各socket函数里的地址参数类型都是sockaddr*,需要进行强制类型转换, 其原因是这些函数必须处理不同协议的地址
二,字节转换函数
htons, htonl, ntohs,ntohl ; n=net h=host s=short l=long
三,地址转换函数
用于从点分十进制形式的字符串转成in_addr_t (uint32_t)
#include <arpa/inet.h>
int inet_aton(const char* strptr,in_addr* addr);
in_addr_t inet_addr(const char* strptr);
char* inet_ntoa(struct in_addr inaddr);
个人理解 a=ANSI C str, n=net
其中1和2等效,将字符串转成in_addr 或in_addr_t 好像2更常用, 3相反
函数1很蛋疼: 运行成功return 1, 失败return 0. 可能这是它用的少的原因吧
4
一,ipv4地址结构:
struct in_addr{ in_addr_t s_addr; }; struct sockaddr_in { sa_family_t sin_family; in_port_t sin_port; struct in_addr sin_addr; char sin_zero[8]; };
其中sin_zero没有用到,不过通常将整个struct 用memset置0
sin_family = AF_INET (IPv4)
sin_port 为网络字节,需要用htons转一下
sin_addr.s_addr需要用地址转换函数inet_addr转换
一般来说,各socket函数里的地址参数类型都是sockaddr*,需要进行强制类型转换, 其原因是这些函数必须处理不同协议的地址
二,字节转换函数
htons, htonl, ntohs,ntohl ; n=net h=host s=short l=long
三,地址转换函数
用于从点分十进制形式的字符串转成in_addr_t (uint32_t)
#include <arpa/inet.h>
int inet_aton(const char* strptr,in_addr* addr);
in_addr_t inet_addr(const char* strptr);
char* inet_ntoa(struct in_addr inaddr);
个人理解 a=ANSI C str, n=net
其中1和2等效,将字符串转成in_addr 或in_addr_t 好像2更常用, 3相反
函数1很蛋疼: 运行成功return 1, 失败return 0. 可能这是它用的少的原因吧
4
相关文章推荐
- python网络编程学习笔记(9):数据库客户端
- unity网络编程学习(3)与javaWeb的http通信
- WinSock网络编程学习(一)Echo客户/服务器程序
- [zz]网络编程学习小结
- 2015-07学习总结——网络编程(TCP/IP)
- 学习笔记09-网络编程
- Windows Socket网络编程学习笔记一
- 谈谈新手如何学习PHP网络编程第1/2页
- 网络编程学习日志
- python网络编程学习笔记(五):socket的一些补充
- 网络编程学习日记 (1)
- Android网络编程要学的东西与Http协议学习
- [置顶]网络编程学习小结
- unix 网络编程学习 day01
- iOS网络编程学习
- 网络编程学习笔记--1.socket可读可写条件
- Python学习 网络编程(六) 网络爬虫
- 网络编程学习笔记(TCP回射服务器程序修订版)
- .NET网络编程学习(一)
- 网络编程学习(三)