硬汉嵌入式论坛

 找回密码
 立即注册
查看: 1451|回复: 9
收起左侧

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

[复制链接]

13

主题

54

回帖

93

积分

初级会员

积分
93
发表于 2022-8-2 16:16:06 | 显示全部楼层 |阅读模式
我这边使用的是stm32H7+lwip+freertos,单片机开启了一个502端口的服务器,现在想将能连接的客户端数量限制到6个,应该修改哪里呢?

回复

使用道具 举报

13

主题

54

回帖

93

积分

初级会员

积分
93
 楼主| 发表于 2022-8-2 17:32:42 | 显示全部楼层
或者说TCP 服务端能否主动发起断开客户端呢
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106739
QQ
发表于 2022-8-2 18:05:13 | 显示全部楼层
TCP是一对一的,这个本质要了解下,你开几个服务器仅可以连接几个客户端。

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

使用道具 举报

13

主题

54

回帖

93

积分

初级会员

积分
93
 楼主| 发表于 2022-8-2 18:46:59 | 显示全部楼层
eric2013 发表于 2022-8-2 18:05
TCP是一对一的,这个本质要了解下,你开几个服务器仅可以连接几个客户端。

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

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

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106739
QQ
发表于 2022-8-3 09:45:13 | 显示全部楼层
myNameIsLin 发表于 2022-8-2 18:46
不是,我服务器开启后,可以同时用多个客户端连接他,应该是1对多吧,关键就在于不知道该怎么让服务器限 ...

理解有偏差,建议先熟悉下基础。

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

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

使用道具 举报

13

主题

54

回帖

93

积分

初级会员

积分
93
 楼主| 发表于 2022-8-4 14:46:29 | 显示全部楼层
eric2013 发表于 2022-8-3 09:45
理解有偏差,建议先熟悉下基础。

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

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

使用道具 举报

13

主题

54

回帖

93

积分

初级会员

积分
93
 楼主| 发表于 2022-8-4 15:09:35 | 显示全部楼层
myNameIsLin 发表于 2022-8-4 14:46
我用的是netconn的api,你这样一说我翻了下代码
[mw_shl_code=c,true]#define netconn_listen(conn) net ...

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

使用道具 举报

13

主题

54

回帖

93

积分

初级会员

积分
93
 楼主| 发表于 2022-8-16 17:35:50 | 显示全部楼层
eric2013 发表于 2022-8-2 18:05
TCP是一对一的,这个本质要了解下,你开几个服务器仅可以连接几个客户端。

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

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

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106739
QQ
发表于 2022-8-16 18:25:48 | 显示全部楼层
myNameIsLin 发表于 2022-8-16 17:35
你好我想问下,lwip的netconn和socket的api可以混用吗?

没问题,两个任务分别刷相应的API玩。

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

使用道具 举报

13

主题

54

回帖

93

积分

初级会员

积分
93
 楼主| 发表于 2022-8-25 20:55:56 | 显示全部楼层
解决了  把IP地址重用打开就行,客户端数量满了的时候把监听关闭,客户端数量不足的时候重新打开监听就行
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|小黑屋|Archiver|手机版|硬汉嵌入式论坛

GMT+8, 2024-5-3 10:42 , Processed in 0.182947 second(s), 25 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

快速回复 返回顶部 返回列表