最近开发一套员工计算机监控系统,遇到了网络通信方面的瓶颈,自己折腾了几天也没解决。
拜托各位大神不吝赐教。
切入正题:
我使用的是TCP/IP协议,用的是TcpListener和TcpClient这2个类来做网络通信。
程序中有多个窗体,有一个主窗体,主窗体上面是电视墙的形式,有很多个图片控件,每一个图片控件都有一个TcpClient,
然后获取了这个TcpClient的NetworkStream,每3秒循环读取客户端那边发送过来的屏幕截图,然后显示。现在又加了几个功能,就是获取客户端的当前运行进程,并在一个新的窗体中显示,还有向客户端发送消息等功能,每一个新功能都是一个新窗体,后面还陆续会增加功能。
在这个地方我不知道要怎么设计了。
单纯的一个主窗体,一个电视墙,一个连接,用着还很好使。
现在在新窗体中增加新功能了,要用到连接,如果把主窗体中的连接传递到新功能的窗体中去继续使用,读取客户端发送过来的数据,可能读取的是图片。或者其他别的数据,就乱了。
我想过,新窗体中再新建一个连接,但是又想到,连接太多了,会不会有性能问题,而且自己也感觉连接多了也不是很好控制,总体感觉是不够优雅,很乱。
所以请各位有这方面经验的大神不吝赐教。
万分感谢。
在线等待解答。
拜托各位大神不吝赐教。
切入正题:
我使用的是TCP/IP协议,用的是TcpListener和TcpClient这2个类来做网络通信。
程序中有多个窗体,有一个主窗体,主窗体上面是电视墙的形式,有很多个图片控件,每一个图片控件都有一个TcpClient,
然后获取了这个TcpClient的NetworkStream,每3秒循环读取客户端那边发送过来的屏幕截图,然后显示。现在又加了几个功能,就是获取客户端的当前运行进程,并在一个新的窗体中显示,还有向客户端发送消息等功能,每一个新功能都是一个新窗体,后面还陆续会增加功能。
在这个地方我不知道要怎么设计了。
单纯的一个主窗体,一个电视墙,一个连接,用着还很好使。
现在在新窗体中增加新功能了,要用到连接,如果把主窗体中的连接传递到新功能的窗体中去继续使用,读取客户端发送过来的数据,可能读取的是图片。或者其他别的数据,就乱了。
我想过,新窗体中再新建一个连接,但是又想到,连接太多了,会不会有性能问题,而且自己也感觉连接多了也不是很好控制,总体感觉是不够优雅,很乱。
所以请各位有这方面经验的大神不吝赐教。
万分感谢。
在线等待解答。
解决方案 »
- dgv选定行的数据怎么在别的窗口中显示???
- winform线程问题
- 有研究SharpDevelop的么?
- C#文件下载代码。哪里出错了?
- 处理EXCEL时候特殊字符的问题
- 求问一个XPATH的语法
- 急救!!datagrid!!!绑定数据后close DataReader问题
- 最近无聊,写了个IIS6.0主机及Ftp服务器开通组件,请大家帮忙测试
- 启动一个进程,如何才能将该进程的界面放在windows桌面(或一个程序界面)的任一指定位置?
- 关于picturebox的问题! 特简单! 在线等候! 马上给分儿!(^-^^-^^-^^-^)
- 请问,SQL Server存入图片必须借助前端吗?
- C#打开word文件
在网络通信中,通信的内容是不是也需要设计一番?
我当前觉得如果不设计一番,NetworkStream里面读取的字节流很乱,不好处理,比如说图片的大小不确定,有的是100k,有的是200k不等的,而且网络速度也不可预料,有时会很好,有时会慢,对了,我是把图片序列化了以后发送的,每次都是循环发送,所以服务端这边接收的时候不知道应该接收多少字节才能成功反序列化一张图片,因此我就先发送一个数字到服务端,告诉服务端后面要接收多少字节的数据,这样才能完整成功的获取一次图片。不然服务端就不知道要读取多少字节。我这也算是粗略的设计吧,目前还好,但是后面功能多了,这方法我觉得肯定不顶用。各位经验大神还请不吝赐教多多传授经验啊。教一下我一般如何设计才好?
我这个是局域网的,机器数量不是很多,也就十几台机器,我截图以后把图片缩小了,最后也就50kb左右了。
开发这个东西主要是要锻炼一下自己。C#屏幕截图我觉得还好吧,就想要个这样的效果,我觉得低端不低端也无所谓了,能看见就好了。又不控制他的电脑,就是看一下他在干什么。
去看VNC的源码我有困难,看不懂。
我想得到一个网络通信的设计方案。
大神,你有这方面的经验吗?还请不吝赐教。
2.客户端最好只用一个Socket连接,所有的接收进程都放到主窗体,其它功能窗体从主窗体获取;发送的进程可以依具体情况放到各个窗体
但是我又有一个顾虑,就是在网络情况很差的时候,怎么去识别丢包。这个包是否丢了。
就是说A往B发数据。A这边已经发了。但是B没收到。没收到我自己想的是分2种可能。1种是网络延迟,另一种是网络断了。我想在这里做个判断,来确定是否丢包。谁知道解决办法啊?
PCA 和 PCB 之间的UDP通信。
PCA 向 PCB 发送了2个数据报,分别为 pack1 和pack2
PCB收到了pack2 但没有收到pack1
那么PCB还有可能收到pack1吗?
为什么?
包头标志 + 包大小 + 包数据
一般4个字节 4个字节 可变自己处理粘包问题.
我想知道,网卡的工作原理是怎样的。我自己设想是这样的:
网卡里面有一个消息队列,当程序要发消息,就会把消息写入消息队列,然后网卡把消息出队,然后送出。
当有消息进入网卡,也是进队,等待程序提取,它们都是有序的,不会说顺序错乱。
其实质是这样吗?如果是这样,那么它这个队列是先进先出,还是后进先出呢?它最大能容纳多少个消息呢?
烦请高人指点迷津。
拜谢。