15.UDP Control Block


结构体 tcp控制块 // tcp control block typedef struct __ln_tcp_stream { int fd; uint32_t sip; uint32_t dip; uint16_t sport; uint16_t d

14.进程间通信组件架构设计


Linux进程通信方式 管道:创建的时候分配一个页大小内存,空间有限,不适合大量数据传输。 消息队列:有两次copy造成额外的CPU消耗,不适合大量信息传输,效率比较低。 共享内存:多个进程共享一块内存,没有同步机制,需要自己实现同步机制。 套接字:在单机的情况下面走网络传输效率低。 信号量:是一种

13.Unix TCP


tcp server #include <stdio.h> #include <arpa/inet.h> #include <sys/socket.h> #include <netinet/in.h> #include <sys/types.h> #include <string.h> int m

16.TCP Control Block Bebug 1


随着代码量增加和逻辑的复杂度提高,需要专门debug一下,很难一次就写对。 编译 Makefile # SPDX-License-Identifier: BSD-3-Clause # Copyright(c) 2010-2014 Intel Corporation # binary name AP

17.TCP Server Status Transmission


组织tcp数据包 /* * 函数名称: ln_tcp_encode * 作 者: 黄彦杰 Lenn * 设计日期: 2024-08-02 * 功能描述: 组织tcp数据包 * 返 回 值: 0 */ static int ln_tcp_encode(uint8_t* pktbuf,

18.TCP Control Block Debug 2


上午调了很久,下午发现core dump不是必现的,说明内存泄漏的地方暂时可以不找,但是可以从抓包上来看我们tcp connect的流程是有问题的。 从上图中可以看出,这个ACK有问题,说我们没有设置ACK。所以我们按照这个思路排查 问题解决

19.TCP Transmission


完成tcp的状态,消息收发。 每次调试代码都很痛苦啊,即使是一次一次地迭代。调试了一天,解决了下面的几个问题。 这里编译器设置的问题,需要给case后的语句加上大括号。这里昨天写的时候也遇到了。 这里是连接

20.TCP Posix API 1


和udp一样,我们需要实现和系统调用一样的接口来实现我们的tcp server。先来看看我们之前写的unix_tcp使用了哪些接口,这边我加上两个系统调用,分别是接收数据和发送数据。 #include <stdio.h> #include <arpa/inet.h> #include <sys/so

21.TCP Posix API 2


tcp posix api send发送 ssize_t nsend(int sockfd, const void *buf, size_t len, __attribute__((unused))int flags) { ssize_t length = 0; void* ho

22.Debug&重构分发协议


debug 如果能找到bug就调试好,找不到就先推进,因为暂时不影响。 我把代码调整到一个文件中,先出1.0版,这样可以避免一些全局的变量问题。 重构分发协议 整合到KNI里面