TCP/IP 学习 --- 4(linux网络基础api)
2018-07-24 07:50:52来源:博客园 阅读 ()
1 sockaddr_in、sockaddr_in6和sockadd_un等都可以强制转换为sockaddr.
2 IP地址是电分十进制形式的字符串,但是在网络中使用的是unsigned int类型的数才能使用。
- in_addr_t inet_addr(const char* strptr); 返回的是ipv4的usigned int类型的地址。
- int inet_aton(const char* cp, struct in_addr* inp); 如果成功返回非零,不成功返回零
- char* inet_ntoa();如果失败返回NULL,如果成功返回正确的点分十进制地址。
- int net_pton(int af, const char* src, void* dst); 点分十进制转换成网络地址。适用于ipv4和ipv6
- const char* inet_ntop(int af, const void* src, char* dst, socklen_t cnt); 网络地址转换成点分十进制地址。适用于ipv4和ipv6
3 函数listen, 第二个参数backlog,表示内核监听队列的最大长度,如果超过了设定值+1的数量(在windows下测试是超过设定值的连接,就会连接不上),则服务器将不受理新的客户连接。只要不accept,内核队列中的监听到的socket数量不会减少.
4 close: 当我们关闭连接时,使用close,其实只是将文件描述符的引用计数减1,一次fork会使父进程中打开的问见描述符引用计数加1,所以在这种情况下我们应该对父子进程中的文件描述符都执行一次close.如果想要直接终止连接,可以使用shutdown函数,参数howto的取值分别为shut_rd, shut_wr和shut_rdwr。
5 msg_oob数据。send和recv函数可以设置消息选项,当设置为紧急数据时(msg_oob),只能有一个字节紧急数据,如果发送的消息是多字节消息,只有最有一个字节是紧急数据。
6 udp发送数据使用sendmsg, 接收数据使用recvmsg,跟send和recv差不多,只不过是socket地址结构的参数。这两个函数也可以用于tcp,用于tcp时,将后面两个参数设置为null即可。
标签:
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有
上一篇:愤怒的小鸟P2831
下一篇:C++类模版外部实现标准写法
- 如何0基础学习C/C++? 2020-06-06
- 一个工业级、跨平台、轻量级的 tcp 网络服务框架:gevent 2020-06-05
- Qt做Tcp数据传输 2020-05-26
- vtk学习记录(三)——初识vtkRenderer 2020-05-16
- C++基础 学习笔记六:复合类型之数组 2020-04-25
IDC资讯: 主机资讯 注册资讯 托管资讯 vps资讯 网站建设
网站运营: 建站经验 策划盈利 搜索优化 网站推广 免费资源
网络编程: Asp.Net编程 Asp编程 Php编程 Xml编程 Access Mssql Mysql 其它
服务器技术: Web服务器 Ftp服务器 Mail服务器 Dns服务器 安全防护
软件技巧: 其它软件 Word Excel Powerpoint Ghost Vista QQ空间 QQ FlashGet 迅雷
网页制作: FrontPages Dreamweaver Javascript css photoshop fireworks Flash