您的位置:首页 > 理论基础 > 计算机网络

【Linux C王者归来】【第二十三章】【网络编程基础】

2016-05-05 15:33 309 查看
1.字节序转换:

htonl,htons,ntohl,ntohs

2.确定大小端:

short a =htons(0x0102)

short *p = &a

*(char*)p == 0x01

小端

3.网络通信地址结构:

struct sockaddr_in{

sa_family_t sin_family;

in_port_t sin_port;

struct in_addr sin_addr

usigned char sin_zero[8]

}

4.地址转化函数

inet_ntop(domain,数字地址,字符串缓存地址,长度)

inet_pton(domain,点分十进制,整数地址)

5.gethostent 获得主机名字,别名,地址类型,ip长度,ip列表,其内容保存在静态存储区,是一致的;另外不要忘记使用endhostent关闭/ETC/HOSTS文件

6.地址映射函数 getaddrinfo,没有用过

7.套接字:

通信与 AF_INET IPV4,AF_INET6 IPV6 ,AF_UNIX, 非网络通信,AF_UNSPIC,未指定域

类型:SOCK_DGRAM 无连接,长度固定报文

   SOCK_STREAM 链接,有序字节流

  SOCK_RAW 原始套接字,可以绕过协议

  SOCK_SEQPACKET 长度固定,面向连接

8.socket获得套接字描述符,别忘了close

9.bind(fd,sockaddr*addr,len),服务器端,可以把addr指定为INADDR_ANY

10.connect(fd,sockaddr*,len)

11.listen(fd,times)

12.accept (fd,sockaddr*,len)返回的是一个新的链接描述符,第二参数获取地址信息,不关心可以写NULL

13.避免网络读失败,可以循环度,如果是信号中断导致,重置需要读入的数据

14.对于面向链接的的传输

send(fd,void*buffer,size_t nbytes,flag)

recv(fd,buffer,nbytes,flags)

15.无数据链接:sendto,recvfrom,二者新增了sockaddr的地址结构指针和结构体长度,用于SOCK_DGRAM

16.非阻塞套接字要改变套接字属性,具体需要学习
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: