Socket制作远程文件传输和sql数据库的问题

来源:百度知道 编辑:UC知道 时间:2024/06/07 23:16:45
我现在在用VC制作一个应该说比较大的系统,全国使用,网络上主要是传输文件(上传和下载都有)和身份验证,速度要求比股票软件稍微慢点也可以接受。

问题1 在服务器上架设sql数据库,再通过Socket发送到客户端是不是可行?

问题2 如果只通过Socket进行文件的传输,身份验证如何实现,数据传输是否要加密。

问题3 用VC和Socket实现这个功能应该大体上采取什么架构,我现在是客户端和服务器都可以发送指令,连接成功后互相发送文件,文件发送已经实现,就是不知道怎么做是不是现在比较好的做法。

问题4 还有就是客户端要有自动更新功能(在软件升级以后,我想应该是这样更新),更新的时候涉及身份验证,也就是说,不同的客户端只能更新到某个文件。

其实总的来说是架构问题,请朋友们帮忙,就这些分了全送了。
是有点没说清楚不过先感谢一下一楼的朋友

现在归纳这个问题一下
a,在服务器端采用Socket和Sql数据库共同完成服务器的任务有没有弊端,速度是否能保证(主要是利用数据库在处理数据上的查询能力)。

b,设计这样的全国性的系统目前的最要架构是怎么样了,也就是说服务器用什么,客户端用什么等等,我现在采用的是服务器Socket客户端是C#(winform)。请朋友们给点建议。差不多就结贴。

问题1 你好像没有说清楚,不好作答。

问题2 可以在客户端使用前做一个注册,由服务器产生一个身份识别码,此后在客户端每次连接服务器时验证这个注册码。数据一般来说都是要加密的,尤其是服务器和客户端之间的指令信息,如果明文传送会很不安全。

问题3 在C/S架构里,一般都是客户端主动去连接服务器。即使是服务器要向客户端发送指令,也是在客户端来连接时判断是否有对应此客户端的指令要下发。具体实现可以在服务端使用一个socket进行listen,当有客户端来连接时启动线程进行具体业务处理;而客户端则定时向服务器进行一次握手通讯,在握手的同时向服务器询问是否有可能存在的指令,如果有便进行指令下发;由于服务器一直在listen,所以客户端有要上传的指令可以随时连接并上传。

问题4 这个可以在问题2里的注册码里包含,比如可更新的文件有3个,指定客户端只能更新第一和第三个文件,你可以在注册码里一个特定字段写入"101",此后在客户端连接服务器时便可以知道自己能更新哪几个文件了。

a.大型系统中的服务器当然需要同时具备网络通信和数据库访问的功能。
因为要借助数据库来管理纷繁复杂的各种数据比如用户信息、文件信息、软件版本等,而没有Socket网络通信就算不上是服务器了。如果设计合理的话对速度是没有影响的,这就需要你在架构和数据库查询方面下功夫做一些优化。

b.socket只是网络编程的一种技术,并不是架构,对应你客户端使用C#的话,服务器底层可用C++实现,架构方面可以研究一下完成端口。