跨时钟域数据搬运神器:用Quartus的异步FIFO IP核连接不同速率模块(实战案例解析)
2026/4/14 17:09:18
默认情况下,socket()创建的套接字是主动的(准备去连接别人)。
而服务器需要的是被动套接字(等着被别人连接)。
listen()函数的作用就是把套接字从“主动模式”切换到“被动监听模式”。打个比方,bind是租好了店面,listen就是打开店门,挂上“营业中”的牌子。
backlogintlisten(intsockfd,intbacklog);sockfd: 已经绑定好的监听套接字。backlog:未完成连接队列的最大长度。backlog到底是什么?很多新手误以为它是“服务器能支持的最大在线人数”。错!
backlog指的是同一时刻正在排队等待被accept接入的连接数。
backlog)。accept)动作很快,即便有一万个顾客陆续来,只要排队不超过 5 个,系统就能正常运转。backlog设为 10000,系统也可能只认 128。为了验证backlog的作用,我们设计一个**“偷懒”服务器**:它开启监听,但死活不调用accept取出连接。这样,连接队列很快就会被填满。
lazy_server.c)#include<stdio.h>#include<unistd.h>#include<arpa/inet.h>#include<stdlib.h>intmain(){int