myNameIsLin 发表于 2022-8-2 16:16:06

如何对LWIP的tcp客户端连接数做限制呢

我这边使用的是stm32H7+lwip+freertos,单片机开启了一个502端口的服务器,现在想将能连接的客户端数量限制到6个,应该修改哪里呢?

myNameIsLin 发表于 2022-8-2 17:32:42

或者说TCP 服务端能否主动发起断开客户端呢

eric2013 发表于 2022-8-2 18:05:13

TCP是一对一的,这个本质要了解下,你开几个服务器仅可以连接几个客户端。

如果是BSD Socket也是同理,他是封装了个API,同样也是1对1,是通过设置监听个数实现的,不要被函数仅创建了一次所迷惑。

myNameIsLin 发表于 2022-8-2 18:46:59

eric2013 发表于 2022-8-2 18:05
TCP是一对一的,这个本质要了解下,你开几个服务器仅可以连接几个客户端。

如果是BSD Socket也是同理, ...

不是,我服务器开启后,可以同时用多个客户端连接他,应该是1对多吧,关键就在于不知道该怎么让服务器限制超出数量的客户端不要连接

eric2013 发表于 2022-8-3 09:45:13

myNameIsLin 发表于 2022-8-2 18:46
不是,我服务器开启后,可以同时用多个客户端连接他,应该是1对多吧,关键就在于不知道该怎么让服务器限 ...
理解有偏差,建议先熟悉下基础。

BSD Socket,Win Socket等,创建服务器后,不是有个设置监听个数的API么,他就是限制连接的客户端用的。设置监听多少个,就是可以连接多少客户端。

ps:不要被开启服务器后,仅创建了一次所迷惑,他是封装了个API,同样也是1对1,是通过设置监听个数决定支持的客户端连接个数。你来一个客户端,根据设置的最大监听个数,会创建一个TCP服务器去接收响应。

myNameIsLin 发表于 2022-8-4 14:46:29

eric2013 发表于 2022-8-3 09:45
理解有偏差,建议先熟悉下基础。

BSD Socket,Win Socket等,创建服务器后,不是有个设置监听个数的AP ...

我用的是netconn的api,你这样一说我翻了下代码
#define netconn_listen(conn) netconn_listen_with_backlog(conn, TCP_DEFAULT_LISTEN_BACKLOG)
TCP_DEFAULT_LISTEN_BACKLOG这个宏默认是255 也就是说这个是可以限制连接数咯? 我等下试试

myNameIsLin 发表于 2022-8-4 15:09:35

myNameIsLin 发表于 2022-8-4 14:46
我用的是netconn的api,你这样一说我翻了下代码
#define netconn_listen(conn) net ...

试了下好像没有什么变化晚点再试试

myNameIsLin 发表于 2022-8-16 17:35:50

eric2013 发表于 2022-8-2 18:05
TCP是一对一的,这个本质要了解下,你开几个服务器仅可以连接几个客户端。

如果是BSD Socket也是同理, ...

你好我想问下,lwip的netconn和socket的api可以混用吗?

eric2013 发表于 2022-8-16 18:25:48

myNameIsLin 发表于 2022-8-16 17:35
你好我想问下,lwip的netconn和socket的api可以混用吗?
没问题,两个任务分别刷相应的API玩。

像TCPnet,ThreadX NetXDUO还能各种API随意刷,lwip如果不能,那就有点坑了。

myNameIsLin 发表于 2022-8-25 20:55:56

解决了把IP地址重用打开就行,客户端数量满了的时候把监听关闭,客户端数量不足的时候重新打开监听就行
页: [1]
查看完整版本: 如何对LWIP的tcp客户端连接数做限制呢