TCP/IP 学习 --- 4(linux网络基础api)

本文介绍了网络编程的基本概念,包括IPv4和IPv6地址的处理方法、socket编程中的关键函数及其用法,如listen、close和shutdown等,并解释了紧急数据(msg_oob)的处理方式以及UDP/TCP数据发送接收的方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1 sockaddr_in、sockaddr_in6和sockadd_un等都可以强制转换为sockaddr.

2 IP地址是电分十进制形式的字符串,但是在网络中使用的是unsigned int类型的数才能使用。

  1.   in_addr_t inet_addr(const char* strptr);  返回的是ipv4的usigned int类型的地址。
  2.   int inet_aton(const char* cp, struct in_addr* inp);  如果成功返回非零,不成功返回零
  3.  char* inet_ntoa();如果失败返回NULL,如果成功返回正确的点分十进制地址。
  4.   int net_pton(int af, const char* src, void* dst); 点分十进制转换成网络地址。适用于ipv4和ipv6
  5. 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即可。

转载于:https://www.cnblogs.com/zanyouxin/p/9255361.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值