如何让c/s和b/s架构下都访问同一服务器,即web浏览器和客户端程序都可以访问服务器

ba_wang_mao 2020-04-27 10:51:38

我有以下需求:

1、服务器上部署一个【非常简单】的服务器程序,采用C/S架构,使用C#的Listener 类编写TCP通信。
2、另外服务器上再部署一个【非常简单】的WEB 浏览器程序,使用HttpListener 类编写。
3、目的是:服务器可以采集客户端的数据,然后将数据存入到MYSQL数据库,同时服务器还支持维护人员通过电脑,使用浏览器访问MYSQL数据库。


问题是:

这2个程序都在一个服务器上,都要使用IP地址和端口号建立TCP连接,但是由于他们同时在一台服务器上,因此IP地址和端口号必然相同,同时运行必然会产生冲突,如何解决呢?
...全文
1653 42 打赏 收藏 转发到动态 举报
写回复
用AI写文章
42 条回复
切换为时间正序
请发表友善的回复…
发表回复
ba_wang_mao 2020-05-08
  • 打赏
  • 举报
回复
引用 42 楼 失足成万古风流人物 的回复:
这么简单的问题,有必要讨论那么多层楼?


你说的太对啦!
  • 打赏
  • 举报
回复
这么简单的问题,有必要讨论那么多层楼?
ba_wang_mao 2020-05-07
  • 打赏
  • 举报
回复
ASP.NET WebFrom 使用C# 连接 MySql https://blog.csdn.net/ba_wang_mao/article/details/105924354
asp.net web项目连接mysql数据库 https://blog.csdn.net/ba_wang_mao/article/details/105924423
ASP.NET连接MySQL数据库 https://blog.csdn.net/ba_wang_mao/article/details/105924587

ba_wang_mao 2020-05-07
  • 打赏
  • 举报
回复
今天想搞WEB 页面,打开VISUAL STUDIO 一下傻眼啦!哪么多新名词都没有见过,怎么办呀!

(1)、 .NET CORE 和 .NET STANDARD 和 .NET FRAMWORK不知道区别是什么,看了网上的介绍也是一头雾水
(2)、进入 .NET CORE 发现 又有MVC、 WEB API、WEB 窗体 ,看来C#想入门需要时间泡呀!

ASP.NET MVC与ASP.NET Web API的区别

MVC主要用来构建网站,既关心数据也关心页面展示,而Web API只关注数据
Web API支持格式协商,客户端可以通过Accept header通知服务器期望的格式
Web API支持Self Host,MVC目前不支持
Web API通过不同的http verb表达不同的动作(CRUD),MVC则通过Action名字表达动作
Web API内建于ASP.NET System.Web.Http命名空间下,MVC位于System.Web.Mvc命名空间下,因此model binding/filter/routing等功能有所不同
Web API非常适合构建移动客户端服务

ba_wang_mao 2020-05-02
  • 打赏
  • 举报
回复
引用 38 楼 jhonsonzhang 的回复:
我想这个netcore2.0以上应该能轻易实现吧。先建立一个razor项目(b/s),再添加客户端类库。再添加netstand类库,C/s架构的Listener类及侦听传递方法放里面,还可以添加相应接口,B端,c端都可以用。发布应该就都在一起。


谢谢!
jhonsonzhang 2020-05-02
  • 打赏
  • 举报
回复
我想这个netcore2.0以上应该能轻易实现吧。先建立一个razor项目(b/s),再添加客户端类库。再添加netstand类库,C/s架构的Listener类及侦听传递方法放里面,还可以添加相应接口,B端,c端都可以用。发布应该就都在一起。
Tiny~ 2020-05-02
  • 打赏
  • 举报
回复
引用 10 楼 wanghui0380 的回复:
你一直认为那些东西是技术,但是我们说那都不是技术。花再多时间都不是技术。那只是个纯体力活,开一个监听就几句话是技术么?
reposne。write一个html文本是技术么?

30年前cgi就这么玩的,不是技术,纯粹体力活。所以cgi才消亡了,因为没有技术,纯体力。大量时间被消耗在不需要消耗的地方,没办法体现程序员的价值


和这位大佬说的类似,我自己一个小软件也是差不多方式处理,服务器端就是response.write下,winform接受后处理。


楼主,我也是自学c#,太复杂的不会,比如udp、 tcp通信,webservice都没搞过,我自己用山寨思路做的,不知道是否明确看懂你的需求,我自己的大概如下:

我要实现的是winform登录后,webrequest一条带参url到服务器校验客户端是否通过认证可否登录、客户端程序及数据库是否是最新版本;
服务器端是 asp.net,接收后判断并写入数据库然后response.write对应数据(如上面大佬说的那样),winform获取后进行对应操作。不会webservice 各种通信协议……就是简单的提交信息并处理

另外写了一个简单的winform这个不给客户,自己用于简单维护服务器端的信息(其实就是简单的读写删改云端数据库里面的记录),可能老鸟看到我说的这些不屑一顾,代码一看直接摇头,目前为止用了有9年多了稳定运行

这样不需要考虑端口号啥的问题,唯独就是要保证客户端网络通畅,我自己设计的是客户端离线状态自动退出,可能还是 有局限性,但是我自己的客户的应用场景都是必须要联网也就不存在问题了
圣殿骑士18 2020-05-01
  • 打赏
  • 举报
回复
引用 35 楼 wanghui0380 的回复:
我也看到了号称10年的主管级大拿的硬件黯然离场了 因为他无法接收新人们用ROS+Mqtt 2月就把他以前要干2年的活给干了
是的,做硬件的也要与时俱进。我也看到我行业中,同样的系统,IP方案的开发效率是光传方案的数倍,系统的开发难度大大降低。
wanghui0380 2020-04-30
  • 打赏
  • 举报
回复
我也看到了号称10年的主管级大拿的硬件黯然离场了 因为他无法接收新人们用ROS+Mqtt 2月就把他以前要干2年的活给干了
  • 打赏
  • 举报
回复
看了下楼主的需求,十来个单片机设备而已,就玩玩的水平完全可以用TcpListener就解决了,但并发还是要做的,每个设备的连接都是独立的保存起来。展示数据的Web直接写个webform部署到IIS上就行了
wanghui0380 2020-04-30
  • 打赏
  • 举报
回复
引用
你这就是不懂硬件下提的建议了。为什么我能理解他,因为我现在和硬件工程师在深入合作。硬件芯片是无法解析webservice这么复杂的协议的。所以才需要tcp。硬件层面上,通讯协议,一般都是tcp,udp,uart,i2c,spi这些。
不必解释,其实把。最近4年的新设备都是采用新方式完成的 比如某家品牌的红外产品是thift的,比如新的物联网芯片是mqtt的 就算是老古董,webserice也不是他们不能理解的。你家的路由器古老把,他的协议是什么啊。ssdp啊。ssdp又是啥?udp+webservice啊 我们前面之所以反对他那么做,原因很简单。他觉着那些是技术,未来可期。甚至他会说我做了一个app如何,他觉着那也是技术。问题我们都知道啊,普通app已经沦为小工级别了,那些已经不是5年前刚毕业的人就喊15-20的年代了,现在就是已经有5年经验但是也就那样的人8-13都难保障------------现实而已,我已经看到有号称10年的app经验的人黯然离场了 如果他真想当未来的傍身的技术,他应该接受变革。
圣殿骑士18 2020-04-30
  • 打赏
  • 举报
回复
引用 31 楼 yuandonghuia 的回复:
我觉得不管他是搞硬件的还是搞软件的,就他这个需求不管是WebService也好,WebApi也好,http post也好,还是WCF也好,这些服务都是既可以WEB调用也可以winform调用的,从这里下手很容易,也非常简单,根据他的目前状况还是推荐WebService.对于他来说,只有一点,放弃自己对于Listener HttpListener的执念,用现在的技术就好.既然搞过软件,网上看看例子,只要环境打起来,纯代码的东西难道说1天搞不定??? [quote=引用 29 楼 圣殿骑士18 的回复:] 大家无法沟通,主要是在于楼主是搞硬件的,而这个论坛是搞软件的,大家相互不太能理解。 因为楼主要通讯的是硬件设备,所以http,websocket什么的协议,太高级了,硬件处理起来并不容易,选用tcp这种底层协议是有必要的。 我的建议是: 1、服务器上部署一个【非常简单】的服务器程序,采用C/S架构,使用C#的Listener 类编写TCP通信。 可以的 2、另外服务器上再部署一个【非常简单】的WEB 浏览器程序,使用HttpListener 类编写。 什么HttpListener,这是楼主不懂web开发,假想的。什么HttpListener,这东西老早被框架包装起来了,不用你考虑这些。 3、目的是:服务器可以采集客户端的数据,然后将数据存入到MYSQL数据库,同时服务器还支持维护人员通过电脑,使用浏览器访问MYSQL数据库。 这不就是个简单网页,写个小web程序就可以了,随便采用什么web架构都行。 问题是: 这2个程序都在一个服务器上,都要使用IP地址和端口号建立TCP连接,但是由于他们同时在一台服务器上,因此IP地址和端口号必然相同,同时运行必然会产生冲突,如何解决呢? ip相同正常,端口可以不一样啊。并没有问题。
[/quote] 你这就是不懂硬件下提的建议了。为什么我能理解他,因为我现在和硬件工程师在深入合作。硬件芯片是无法解析webservice这么复杂的协议的。所以才需要tcp。硬件层面上,通讯协议,一般都是tcp,udp,uart,i2c,spi这些。
yuandonghuia 2020-04-30
  • 打赏
  • 举报
回复
我觉得不管他是搞硬件的还是搞软件的,就他这个需求不管是WebService也好,WebApi也好,http post也好,还是WCF也好,这些服务都是既可以WEB调用也可以winform调用的,从这里下手很容易,也非常简单,根据他的目前状况还是推荐WebService.对于他来说,只有一点,放弃自己对于Listener HttpListener的执念,用现在的技术就好.既然搞过软件,网上看看例子,只要环境打起来,纯代码的东西难道说1天搞不定???
引用 29 楼 圣殿骑士18 的回复:
大家无法沟通,主要是在于楼主是搞硬件的,而这个论坛是搞软件的,大家相互不太能理解。 因为楼主要通讯的是硬件设备,所以http,websocket什么的协议,太高级了,硬件处理起来并不容易,选用tcp这种底层协议是有必要的。 我的建议是: 1、服务器上部署一个【非常简单】的服务器程序,采用C/S架构,使用C#的Listener 类编写TCP通信。 可以的 2、另外服务器上再部署一个【非常简单】的WEB 浏览器程序,使用HttpListener 类编写。 什么HttpListener,这是楼主不懂web开发,假想的。什么HttpListener,这东西老早被框架包装起来了,不用你考虑这些。 3、目的是:服务器可以采集客户端的数据,然后将数据存入到MYSQL数据库,同时服务器还支持维护人员通过电脑,使用浏览器访问MYSQL数据库。 这不就是个简单网页,写个小web程序就可以了,随便采用什么web架构都行。 问题是: 这2个程序都在一个服务器上,都要使用IP地址和端口号建立TCP连接,但是由于他们同时在一台服务器上,因此IP地址和端口号必然相同,同时运行必然会产生冲突,如何解决呢? ip相同正常,端口可以不一样啊。并没有问题。
圣殿骑士18 2020-04-29
  • 打赏
  • 举报
回复
大家无法沟通,主要是在于楼主是搞硬件的,而这个论坛是搞软件的,大家相互不太能理解。 因为楼主要通讯的是硬件设备,所以http,websocket什么的协议,太高级了,硬件处理起来并不容易,选用tcp这种底层协议是有必要的。 我的建议是: 1、服务器上部署一个【非常简单】的服务器程序,采用C/S架构,使用C#的Listener 类编写TCP通信。 可以的 2、另外服务器上再部署一个【非常简单】的WEB 浏览器程序,使用HttpListener 类编写。 什么HttpListener,这是楼主不懂web开发,假想的。什么HttpListener,这东西老早被框架包装起来了,不用你考虑这些。 3、目的是:服务器可以采集客户端的数据,然后将数据存入到MYSQL数据库,同时服务器还支持维护人员通过电脑,使用浏览器访问MYSQL数据库。 这不就是个简单网页,写个小web程序就可以了,随便采用什么web架构都行。 问题是: 这2个程序都在一个服务器上,都要使用IP地址和端口号建立TCP连接,但是由于他们同时在一台服务器上,因此IP地址和端口号必然相同,同时运行必然会产生冲突,如何解决呢? ip相同正常,端口可以不一样啊。并没有问题。
wanghui0380 2020-04-29
  • 打赏
  • 举报
回复
整个项目在最早的帖子都说过了,他唯一需要的做的事情,就是把数据发出去。剩下的都不是他要操心的东西 你要类比滴滴的化,也就是他唯一要的一件事情就是,每30秒把定位消息发出去。无论滴滴后面怎么折腾,都是后面的事情,和他要做的事情已经没关系了
wanghui0380 2020-04-29
  • 打赏
  • 举报
回复
就是他说他的客户端不能上网都没关系,写道本地服务器数据库(分发复制也好,用mysql黑洞引擎也罢),让本地服务器代理到远端mysql也行(只要本地服务器能上网)
wanghui0380 2020-04-29
  • 打赏
  • 举报
回复
引用 25 楼 assky124 的回复:
大佬说的方式固然好,但是需要大量时间学习,同一个服务器部署几个服务再正常不过了。防火墙把相关的非标端口开开就行了。 你的需求两个,一个TCPService,这个NUGET找找别人封装好的包,基本几行代码就能搞定了,自己定义一个端口比如 8001 还有一个网站,这个看你功能复杂度了,不好说,简单的增删改查,直接用EF等DAO把数据读出来就行了,用IIS承载,用80口。 如果我说的这些你也搞不清楚,还是外包吧,花不了几个钱,要求提供源码
关键是他不会理你的,他非要玩那种技术。别人帮不了的 如果说最简单实现,在他之前的N个帖子已经回复了,他还需要什么tcp么。客户端接到下位机数据,直接远程写入mysql就行。剩下的也说过了从mysql读数据做个展示网站根本就不是什么事情。(要不讲究美观和漂亮,请个没毕业的学生1个星期也给你搞了)
assky124 2020-04-29
  • 打赏
  • 举报
回复
大佬说的方式固然好,但是需要大量时间学习,同一个服务器部署几个服务再正常不过了。防火墙把相关的非标端口开开就行了。 你的需求两个,一个TCPService,这个NUGET找找别人封装好的包,基本几行代码就能搞定了,自己定义一个端口比如 8001 还有一个网站,这个看你功能复杂度了,不好说,简单的增删改查,直接用EF等DAO把数据读出来就行了,用IIS承载,用80口。 如果我说的这些你也搞不清楚,还是外包吧,花不了几个钱,要求提供源码
weixin_47313197 2020-04-29
  • 打赏
  • 举报
回复
表示遇到过同样问题
ba_wang_mao 2020-04-29
  • 打赏
  • 举报
回复
引用 29 楼 圣殿骑士18 的回复:
大家无法沟通,主要是在于楼主是搞硬件的,而这个论坛是搞软件的,大家相互不太能理解。

因为楼主要通讯的是硬件设备,所以http,websocket什么的协议,太高级了,硬件处理起来并不容易,选用tcp这种底层协议是有必要的。

我的建议是:
1、服务器上部署一个【非常简单】的服务器程序,采用C/S架构,使用C#的Listener 类编写TCP通信。
可以的

2、另外服务器上再部署一个【非常简单】的WEB 浏览器程序,使用HttpListener 类编写。
什么HttpListener,这是楼主不懂web开发,假想的。什么HttpListener,这东西老早被框架包装起来了,不用你考虑这些。

3、目的是:服务器可以采集客户端的数据,然后将数据存入到MYSQL数据库,同时服务器还支持维护人员通过电脑,使用浏览器访问MYSQL数据库。
这不就是个简单网页,写个小web程序就可以了,随便采用什么web架构都行。


问题是:

这2个程序都在一个服务器上,都要使用IP地址和端口号建立TCP连接,但是由于他们同时在一台服务器上,因此IP地址和端口号必然相同,同时运行必然会产生冲突,如何解决呢?
ip相同正常,端口可以不一样啊。并没有问题。



谢谢楼上,说出我的心里话。

我是搞嵌入式开发的,去年利用业余时间接触了一个月的C#,今年3月底又利用业余时间接触了一个多星期,说实在的,很多名词都没有听说过,你们搞纯软件的认为三下五除二就可搞定,但是我却打不到方向,WEB SERVER等名词都是3月底才知道的。
所以的高手搞好的框架让我用,可能比登天还难,我根本就不敢用呀,因为根本就打不到方向,这是事实。
加载更多回复(22)

110,538

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧