OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 2876|回复: 8

LWIP STM32F4做server的时候如何跟多个client通信?

[复制链接]

1

主题

5

帖子

0

精华

新手入门

积分
13
金钱
13
注册时间
2019-5-24
在线时间
2 小时
发表于 2019-5-24 11:17:37 | 显示全部楼层 |阅读模式
1.配置tcp_server的代码如下,里面创建了一个tcppcbnew控制块,作用是一个server对一个client。但是如果我想一个server通过路由器连接多个clients怎么办?是不是每一个cleint都要在server这一端有一个独立的tcp控制块?如果是这样,那么server端在不知道client的数量的情况下如何去申请足够的空间来放tcp控制块。希望各位高手给讲解一下。
void tcp_server_test(void)
{
        err_t err;  
        struct tcp_pcb *tcppcbnew;          //定义一个TCP服务器控制块
        struct tcp_pcb *tcppcbconn;          //定义一个TCP服务器控制块
        tcppcbnew=tcp_new();        //创建一个新的pcb
        if(tcppcbnew)                        //创建成功
        {
                err=tcp_bind(tcppcbnew,IP_ADDR_ANY,TCP_SERVER_PORT);        //将本地IP与指定的端口号绑定在一起,IP_ADDR_ANY为绑定本地所有的IP地址
                if(err==ERR_OK)        //绑定完成
                {
                        tcppcbconn=tcp_listen(tcppcbnew);                         //设置tcppcb进入监听状态
                        tcp_accept(tcppcbconn,tcp_server_accept);         //初始化LWIP的tcp_accept的回调函数
                }
                else res=1;  
      }
}

正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

117

主题

598

帖子

1

精华

资深版主

Rank: 8Rank: 8

积分
1694
金钱
1694
注册时间
2012-5-10
在线时间
437 小时
发表于 2019-5-24 11:40:37 | 显示全部楼层

回帖奖励 +1 金钱

可以使用短连接啊,会话完毕就断开连接
回复 支持 反对

使用道具 举报

1

主题

5

帖子

0

精华

新手入门

积分
13
金钱
13
注册时间
2019-5-24
在线时间
2 小时
 楼主| 发表于 2019-5-24 11:42:16 | 显示全部楼层
xsx127 发表于 2019-5-24 11:40
可以使用短连接啊,会话完毕就断开连接

不是啊,我就想知道如果1连多的情况下,server是怎么分配和使用TCP控制块的,不使用短连接。
回复 支持 反对

使用道具 举报

1

主题

5

帖子

0

精华

新手入门

积分
13
金钱
13
注册时间
2019-5-24
在线时间
2 小时
 楼主| 发表于 2019-5-24 11:42:50 | 显示全部楼层
xsx127 发表于 2019-5-24 11:40
可以使用短连接啊,会话完毕就断开连接

有没有类似的例程,看看
回复 支持 反对

使用道具 举报

117

主题

598

帖子

1

精华

资深版主

Rank: 8Rank: 8

积分
1694
金钱
1694
注册时间
2012-5-10
在线时间
437 小时
发表于 2019-5-24 11:43:56 | 显示全部楼层
金元宝 发表于 2019-5-24 11:42
有没有类似的例程,看看

那我不清楚了,你可以在原子的例程里面找找看,我是自己写的代码
如有技术问题,微信扫头像交流,STM32,JAVA,服务器
回复 支持 反对

使用道具 举报

1

主题

5

帖子

0

精华

新手入门

积分
13
金钱
13
注册时间
2019-5-24
在线时间
2 小时
 楼主| 发表于 2019-5-24 11:46:24 | 显示全部楼层
xsx127 发表于 2019-5-24 11:43
那我不清楚了,你可以在原子的例程里面找找看,我是自己写的代码

你写过1对多的代码么?原子的里面我没找到
回复 支持 反对

使用道具 举报

117

主题

598

帖子

1

精华

资深版主

Rank: 8Rank: 8

积分
1694
金钱
1694
注册时间
2012-5-10
在线时间
437 小时
发表于 2019-5-24 11:47:12 | 显示全部楼层
金元宝 发表于 2019-5-24 11:42
有没有类似的例程,看看

回答错帖子了,
tcp控制块只需要一个,但是每一个客户端需要创建一个客户端对象
如有技术问题,微信扫头像交流,STM32,JAVA,服务器
回复 支持 反对

使用道具 举报

117

主题

598

帖子

1

精华

资深版主

Rank: 8Rank: 8

积分
1694
金钱
1694
注册时间
2012-5-10
在线时间
437 小时
发表于 2019-5-24 11:48:04 | 显示全部楼层
金元宝 发表于 2019-5-24 11:46
你写过1对多的代码么?原子的里面我没找到

写过啊
如有技术问题,微信扫头像交流,STM32,JAVA,服务器
回复 支持 反对

使用道具 举报

1

主题

5

帖子

0

精华

新手入门

积分
13
金钱
13
注册时间
2019-5-24
在线时间
2 小时
 楼主| 发表于 2019-5-24 11:50:31 | 显示全部楼层
xsx127 发表于 2019-5-24 11:47
回答错帖子了,
tcp控制块只需要一个,但是每一个客户端需要创建一个客户端对象

能不能贴个码出来,让小弟学习一下,不胜感激
回复 支持 反对

使用道具 举报

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

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2024-11-24 19:00

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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