搜索
bottom↓
回复: 53

C#上位机作为客户端如何处理来自多个服务器的数据

[复制链接]

出590入992汤圆

发表于 2018-7-19 14:31:21 | 显示全部楼层 |阅读模式
现在电脑上位机用C#编写,作为客户端,用STM32控制的W5500为服务端,但是这样的端口有64个,而且数据处理格式都是一样的。现在的问题是:之前一直处理的一个端口发来的数据,现在如果突然变为64个,是不是就要写64个处理程序?可以不可以这样:用一个函数处理,数据就放到一起,但是可以通过判定数据来自哪个服务器来处理?具体的有没有什么好方法呢?我可不想使用64个线程处理。
或者说我的思路存在问题?
项目的需求是这样的,上位机作为客户端,服务器的数量是不一定的。但是服务器都是用W5500编写的,用于管理照明系统的。

2018-7-19 14:41:30:编辑,编辑原因:发帖的时候不小心按到了回车键。东西还没有发完。
希望莫大看到了,不要封锁ID,纯粹是因为不小心按到了回车键,然后帖子还没有发完,快速的几分钟就编写完成了,但是没有想到这么快这么多人看到了。标题好像中间改了两次,没有成功。

2018-7-19 14:59:57 编辑:为什么工改不了标题?改了几次都没有成功?是不是因为我发布的悬赏贴?

2018-7-19 15:32:55 编辑,测试可以编辑昨天的帖子的标题,这个标题改不了,麻烦莫大看到了,帮忙改为:《C#上位机作为客户端如何处理来自多个服务器的数据》

2018-7-19 21:15:56 编辑,试过了CHROME IE 手机上标准版本 来改标题,但是标题就是改不过来。希望看到的指导一下。

阿莫论坛20周年了!感谢大家的支持与爱护!!

月入3000的是反美的。收入3万是亲美的。收入30万是移民美国的。收入300万是取得绿卡后回国,教唆那些3000来反美的!

出870入263汤圆

发表于 2018-7-19 14:31:22 | 显示全部楼层
W5500通过MQTT连接到服务器电脑,电脑作为服务器(broker);mqtt开销小,效率高,可以广播也可以单个节点控制,非常适合设备控制。

出0入49汤圆

发表于 2018-7-19 14:31:45 | 显示全部楼层
怎么什么都没有?

出0入0汤圆

发表于 2018-7-19 14:33:42 | 显示全部楼层
估计手按快了

出0入0汤圆

发表于 2018-7-19 14:36:29 | 显示全部楼层
别这样,珍惜ID

出0入4汤圆

发表于 2018-7-19 14:37:25 | 显示全部楼层
C++                                                          .

出0入0汤圆

发表于 2018-7-19 14:38:40 | 显示全部楼层
中级会员也会犯这样的错?

出0入72汤圆

发表于 2018-7-19 14:39:27 | 显示全部楼层
楼主赶紧改标题吧,珍惜ID哦

出20入62汤圆

发表于 2018-7-19 14:40:10 | 显示全部楼层
被你的标题吸引 就来了~

出0入0汤圆

发表于 2018-7-19 15:36:58 | 显示全部楼层
真不知是楼主手快还是楼上的几位手快

出0入0汤圆

发表于 2018-7-19 15:38:10 | 显示全部楼层
别这样,珍惜ID

出0入0汤圆

发表于 2018-7-19 15:54:21 来自手机 | 显示全部楼层
是本坛最短的标题吗?

出0入22汤圆

发表于 2018-7-19 16:07:16 来自手机 | 显示全部楼层
没搞懂其需求,是说计算机上需要开64个端口?没必要啊。

出870入263汤圆

发表于 2018-7-19 17:45:18 | 显示全部楼层
楼主不具备网络基础概念和知识,表达方式很业余。

出0入0汤圆

发表于 2018-7-19 19:09:28 来自手机 | 显示全部楼层
珍惜id系列

出10入113汤圆

发表于 2018-7-19 19:15:54 | 显示全部楼层
按IP地址区分数据来源啊!

出0入8汤圆

发表于 2018-7-19 19:16:44 来自手机 | 显示全部楼层
这标题太猖狂了。

出0入4汤圆

发表于 2018-7-19 19:55:58 | 显示全部楼层
难道不是应该用STM32控制的W5500作为客户端,电脑作为服务端吗?  感觉肯定可以一个线程处理。

出0入10汤圆

发表于 2018-7-19 20:03:24 来自手机 | 显示全部楼层
来看看最短标题

出0入0汤圆

发表于 2018-7-19 20:52:45 来自手机 | 显示全部楼层
手机上切到标准版或电脑版。触屏版仿佛改不了标题。实在不行,重新注册个号吧。

出0入0汤圆

发表于 2018-7-19 20:58:24 | 显示全部楼层
楼主现在的心情和这个C一样了

出590入992汤圆

 楼主| 发表于 2018-7-19 21:00:27 | 显示全部楼层
armstrong 发表于 2018-7-19 17:45
楼主不具备网络基础概念和知识,表达方式很业余。

专业,就是的,我对网络概念比较模糊。我自己也感觉处理方式变复杂了。

出0入0汤圆

发表于 2018-7-19 21:01:04 | 显示全部楼层
珍惜ID,楼主

出590入992汤圆

 楼主| 发表于 2018-7-19 21:03:52 | 显示全部楼层
zxq6 发表于 2018-7-19 16:07
没搞懂其需求,是说计算机上需要开64个端口?没必要啊。

我不太懂网络,之前一对一就是电脑端作为客户端,W5500作为服务器,做了一个IAP升级。但是现在:有多个W5500作为服务器,同时需要对这些进行管理,而且指令大概周几十条,最多管理64个,所以怎么样做才好呢?

出590入992汤圆

 楼主| 发表于 2018-7-19 21:04:26 | 显示全部楼层
armstrong 发表于 2018-7-19 17:45
楼主不具备网络基础概念和知识,表达方式很业余。

所以想问问你,我不太懂网络,之前一对一就是电脑端作为客户端,W5500作为服务器,做了一个IAP升级。但是现在:有多个W5500作为服务器,同时需要对这些进行管理,而且指令大概周几十条,最多管理64个,所以怎么样做才好呢?

出0入0汤圆

发表于 2018-7-19 21:05:24 | 显示全部楼层
SUPER_CRJ 发表于 2018-7-19 21:00
专业,就是的,我对网络概念比较模糊。我自己也感觉处理方式变复杂了。 ...

楼主你好,楼主再见!

你为何不用电脑的浏览器来修改呢?有困难要克服困难。。。

出590入992汤圆

 楼主| 发表于 2018-7-19 21:07:10 | 显示全部楼层
就在今天 发表于 2018-7-19 21:05
楼主你好,楼主再见!

你为何不用电脑的浏览器来修改呢?有困难要克服困难。。。 ...

您好,就算我走了,也会回来的。我现在用的CHROME浏览器来改的。试试IE吧

出590入992汤圆

 楼主| 发表于 2018-7-19 21:17:46 | 显示全部楼层
就在今天 发表于 2018-7-19 21:05
楼主你好,楼主再见!

你为何不用电脑的浏览器来修改呢?有困难要克服困难。。。 ...

改不了,CHROME,IE,手机标准版本都不行。估计是悬赏帖的原因。

出0入0汤圆

发表于 2018-7-19 21:55:26 | 显示全部楼层
SUPER_CRJ 发表于 2018-7-19 21:17
改不了,CHROME,IE,手机标准版本都不行。估计是悬赏帖的原因。

有可能是悬赏帖的原因,在其他Discuz论坛做管理时遇到过:凡是悬赏的帖子,管理员和版主,都无法移动帖子,只能去掉悬赏才可以移动。

出0入4汤圆

发表于 2018-7-19 22:24:04 来自手机 | 显示全部楼层
赶紧把钱分了,就可以改了

出0入0汤圆

发表于 2018-7-20 08:31:39 | 显示全部楼层
客户端和服务器通过ip和端口号建立了TCP连接,这个通讯连接就是1对1,且是唯一的了

出0入30汤圆

发表于 2018-7-20 08:46:50 | 显示全部楼层
可以看下hpsocket,帮你把连接都处理好了,只要专心做应用逻辑了

出590入992汤圆

 楼主| 发表于 2018-7-20 08:47:59 | 显示全部楼层
icexiong 发表于 2018-7-20 08:31
客户端和服务器通过ip和端口号建立了TCP连接,这个通讯连接就是1对1,且是唯一的了 ...

一个服务器可以连接多个客户端,同样的在电脑上建议多个客户端,连接不同的服务器,应该没有问题吧?

出0入0汤圆

发表于 2018-7-20 09:13:32 | 显示全部楼层
5500不太懂,但是x86这边都是以 两端口 两IP四个参数来确定唯一链接的,一种服务开一个监听就可以了
说实话多线程是最简单的实现方式,线程栈可以分担很大一部分的上下文,
不用多线程基本就IO多路复用了,那个几乎得用结构体包下所有上下文,那个更麻烦...

出0入0汤圆

发表于 2018-7-20 09:17:33 | 显示全部楼层
电脑做客户端连接一个服务器就要一个端口,要是数量多端口都不够用,还是改成电脑做服务器好

出0入4汤圆

发表于 2018-7-20 09:22:17 来自手机 | 显示全部楼层
lovelywwei 发表于 2018-7-20 08:46
可以看下hpsocket,帮你把连接都处理好了,只要专心做应用逻辑了

这可以在c#上用吗?我准备做工业设备物联网,几百个设备每隔1分钟发送自己的状态信息到服务器,这个hpsocket比直接用C#的socket开发更简单吧?

出0入0汤圆

发表于 2018-7-20 09:22:53 | 显示全部楼层
SUPER_CRJ 发表于 2018-7-20 08:47
一个服务器可以连接多个客户端,同样的在电脑上建议多个客户端,连接不同的服务器,应该没有问题吧? ...

完全没问题吖

出0入0汤圆

发表于 2018-7-20 12:42:24 来自手机 | 显示全部楼层
这里的服务端,客户端是什么意思? W5500作服务端给电脑IAP升级?看了几遍都没看懂

出590入992汤圆

 楼主| 发表于 2018-7-20 14:53:28 | 显示全部楼层
tomtone 发表于 2018-7-20 12:42
这里的服务端,客户端是什么意思? W5500作服务端给电脑IAP升级?看了几遍都没看懂 ...

W5500作为网络的服务器,用STM32控制的,然后用C#编写了一个上位机作为Client与其连接,然后升级STM32的程序。

出0入16汤圆

发表于 2018-7-20 16:24:56 | 显示全部楼层
一定是TCP连接?IOCP了解一下

出0入89汤圆

发表于 2018-7-20 17:21:07 来自手机 | 显示全部楼层
如果就1000个随便写,如果过w,要有技巧,10w级那要找大神了

出20入186汤圆

发表于 2018-7-20 17:38:37 | 显示全部楼层
用UDP协议就简单多了,
当然你用64个线程处理也行,
1个线程更好

出870入263汤圆

发表于 2018-7-20 19:32:51 | 显示全部楼层
我认为你的结构反了,应该是电脑做服务器,W5500做客户端;因为电脑可以换成公网服务器,以便实现远程管理;而一些设备节点总是位于私有网络里的,作为服务器也没用。

出590入992汤圆

 楼主| 发表于 2018-7-21 08:20:03 | 显示全部楼层
armstrong 发表于 2018-7-20 19:34
W5500通过MQTT连接到服务器电脑,电脑作为服务器(broker);mqtt开销小,效率高,可以广播也可以单个节点 ...

非常感谢,对网络几乎不太懂,看来日后需要学习一下物联网之类的操作,熟悉一下网络编程。

出0入0汤圆

发表于 2018-7-21 10:56:10 | 显示全部楼层
SUPER_CRJ 发表于 2018-7-21 08:20
非常感谢,对网络几乎不太懂,看来日后需要学习一下物联网之类的操作,熟悉一下网络编程。 ...

和物联网没啥关系。 就是说你这个结构有点不太好。 一般是电脑端做服务端。 单片机做客户端。    因为一般是一个服务端为多个客户端服务。编程得话 IOCP了解一下。如果在
windows上面跑, supersocket 一个不错得服务端得库。

出0入46汤圆

发表于 2018-7-21 11:09:01 | 显示全部楼层
电脑端资源大,先简单实现开64个线程看看效果。如果每个连接数据不大,接下来如果要减少线程数量,那就用线程池改进。一步一步改进,慢慢理解通信和线程概念。
其实这个程序关键不在于线程,而在于链接管理。如果某个链接断了,你客户端要自动释放,并且还能够自动尝试重新链接。这块建议专门做个管理。

出0入0汤圆

发表于 2018-7-21 11:16:08 来自手机 | 显示全部楼层
一个单片机有64台服务器连接??

出0入0汤圆

发表于 2018-7-21 14:14:11 | 显示全部楼层
C#需要开多个线程吧?

出590入992汤圆

 楼主| 发表于 2018-7-21 14:34:45 | 显示全部楼层
youkebing 发表于 2018-7-20 17:21
如果就1000个随便写,如果过w,要有技巧,10w级那要找大神了

1000个还随便写?现在让我写两个都觉得不好扩展。

出0入0汤圆

发表于 2018-7-21 15:05:54 | 显示全部楼层
应该上位机做服务器,设备端做客户端

出0入89汤圆

发表于 2018-7-21 16:50:00 | 显示全部楼层
SUPER_CRJ 发表于 2018-7-21 14:34
1000个还随便写?现在让我写两个都觉得不好扩展。

如果这样的话,建议你用udp算了,这个难度要对来说低很多了。

出0入0汤圆

发表于 2018-7-21 19:42:55 | 显示全部楼层
若采用TCP协议,多线程;若采用UDP协议,则环形缓冲  

出0入0汤圆

发表于 2018-7-22 08:09:29 | 显示全部楼层

上位机应该做服务器,设备端做客户端
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-4-24 04:20

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

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