UNPv13:#第3章#套接字编程简介
2017-12-15 10:39
260 查看
IPv4套接字地址结构
POSIX规范只要求3个字段:sin_family、sin_addr和sin_port。
#include <netinet/in.h> struct sockaddr_in { uint8_t sin_len; sa_family_t sin_family; in_port_t sin_port; struct in_addr sin_addr; ... };
通用套接字地址结构
#include <sys/socket.h> struct sockaddr { uint8_t sa_len; sa_family_t sa_family; char sa_data[14]; };
字节排序程序
术语“小端”和“大端”表示多个字节值的哪一端存储在该值的起始地址。网际协议使用大端字节序来传送这些多字节整数。
#include <netinet/in.h> uint16_t htons(uint16_t host16bitvalue); uint32_t htonl(uint32_t host32bitvalue); uint16_t ntohs(uint16_t net16bitvalue); uint32_t ntohl(uint32_t net32bitvalue);
在那些与网际协议所用的大端字节序相同的系统中,这四个函数通常被定义为空宏。
inet_aton、inet_addr和inet_ntoa函数
#include <arpa/inet.h> int inet_aton(const char* strptr, struct in_addr* addrptr);//字符串有效返回1,否则为0 in_addr_t inet_addr(const char* strptr);//字符串有效返回网络字节序的32位IPv4地址,否则为INADDR_NONE char* inet_ntoa(struct in_addr inaddr);//指向一个点分十进制数串的指针
inet_pton和inet_ntop函数
#include <arpa/inet.h> int inet_pton(int family, const char* strptr, void* addrptr);//成功:1;输入格式无效:0;出错:-1 const char* inet_ntop(int family, const void* addrptr, char* strptr, size_t len);//失败:NULL;成功:结果
#include <netinet.in.h> #define INET_ADDRSTRLEN 16
注意
字节流套接字上调用read或write输入或输出的字节数可能比请求的数量少,原因在于套接字的缓冲器可能已经达到了极限,需要再次调用read或write输入或输出剩余的字节。对于文本行交互的应用来说,程序应该按照操作缓冲区来编写。
相关文章推荐
- UNP第3章 套接字编程简介
- UNIX网络编程 第3章 套接字编程简介
- UNIX网络编程第3章套接字编程简介3.2套接字地址结构3.3值结果参数3.4字节排序函数
- Unix网络编程 卷1 第3章:套接字编程简介(套接字地址结构)
- Unix网络编程学习笔记之第3章 套接字编程简介
- UNP读书笔记 第3章 套接字编程简介
- 套接字编程简介
- 套接字编程简介<一>
- 《UNIX网络编程卷1》读书笔记--第三章套接字编程简介
- 套接字编程简介<二>
- 套接字编程简介【1】
- 第3章 套接口编程简介
- 套接字编程简介(笔记)
- UNIX网络编程笔记(2)—套接字编程简介
- UNIX网络编程2:套接字编程简介
- 《UNIX网络编程》 第三章 套接字编程简介
- 套接字编程简介
- UNP函数笔记一: 套接字编程简介
- 第三章 套接字编程简介
- 第三章 套接字编程简介