![](https://img-blog.csdnimg.cn/20201014180756928.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
套接字编程
yyyyyyyuande
这个作者很懒,什么都没留下…
展开
-
linux udp套接字编程获取报文源地址和源端口(二)
之前项目中涉及udp套接字编程,其中一个要求是获取客户端发过来报文的端口和ip地址,功能很简单,只是对这一块不很熟。之前使用的方法是通过调用recvmsg这个接口,并通过参数msg里面的msg_name来获取客户端地址,如下ssize_t recvmsg(int sockfd, struct msghdr *msg, int flags); //省略次要代码 ...原创 2018-06-05 23:00:13 · 3446 阅读 · 0 评论 -
关于epoll 水平触发在udp套接字上不生效问题的原因
背景简介: epoll有两个模式可以设置,一个是水平模式(level-triggered),另一个是边缘模式(edge-triggered), 区别就是水平模式可以带来事件的重复触发,而边缘模式只触发一次。举个栗子,当epoll监听的描述符发生可读事件时,比方说收到了别人发来的数据,...原创 2018-06-21 22:32:08 · 1082 阅读 · 0 评论 -
Linux PF_INET6 定义
PF_INET6 定义在 /include/linux/socket.h 文件中#define AF_INET6 10 /* IP version 6 */#define PF_INET6 AF_INET6其它的地址族定义:/* Supported address families. */#define AF_UNSPEC 0#define AF_UNIX 1 /* Unix d...原创 2018-07-05 20:19:25 · 3704 阅读 · 0 评论 -
Linux IPv6 UDP套接字编程示例
udp ipv6套接字编程和ipv4接口类似,参数略有不同,流程都包括创建套接字、绑定地址、发送等。下面是一个udp ipv6 demo, 包括创建ipv6套接字、绑定地址和发送数据等。首先先在linux上配置一个本地站点地址,然后使用这个地址发送。//linux上添加IPv6地址命令sudo ip -6 addr add fd11::100/64 dev eth0...原创 2018-08-21 23:53:04 · 2225 阅读 · 1 评论 -
Linux 套接字编程 套接字选项SO_BINDTODEVICE 绑定接口 示例
man socket(7)里对该选项的描述: SO_BINDTODEVICE Bind this socket to a particular device like “eth0”, as speci‐ fied in the passed interface name. If the name is an empty ...原创 2018-09-16 19:56:08 · 15116 阅读 · 4 评论 -
tcp/ip 协议栈Linux内核源码分析14 udp套接字接收流程一
内核版本:3.4.39前面两篇文章分析了UDP套接字从应用层发送数据到内核层的处理流程,这里继续分析相反的流程,看看数据是怎么从内核送到应用层的。与发送类似,内核也提供了多个接收数据的系统调用接口,接口定义如下:#include <sys/types.h>#include <sys/socket.h>ssize_t recv(int sockfd, voi...原创 2019-05-31 17:00:24 · 568 阅读 · 0 评论 -
tcp/ip 协议栈Linux内核源码分析15 udp套接字接收流程二
内核版本:3.4.39上篇我们分析了UDP套接字如何接收数据的流程,最终它是在内核套接字的接收队列里取出报文,剩下的问题就是谁会去写入这个队列,当然,这部分工作由内核来完成,本篇剩下的文章主要分析内核网络层收到UDP报文后如何将报文插入到对应套接字的接收队列里面。我们直到网络层到传输层的最终的接口是ip_local_deliver_finish,下面是它的代码:static int ...原创 2019-05-31 17:09:51 · 562 阅读 · 0 评论