使用MFC编写局域网内部查询服务器(其中的一台PC机)上数据库的一个系统,有几个问题需要请教一下。
是这样的,局域网内有多台电脑,其中有一台电脑上有一个仓库的数据库(mdb格式),想使用MFC做个系统,在带有数据库的电脑上做个服务端,其他电脑做个客户端,然后客户端通过登...
是这样的,局域网内有多台电脑,其中有一台电脑上有一个仓库的数据库(mdb格式),想使用MFC做个系统,在带有数据库的电脑上做个服务端,其他电脑做个客户端,然后客户端通过登录来进行数据库的操作(主要有三个,查询,存物品,取物品,前者应该是查询范畴,后者则是修改范畴),客户端客户的密码设置也是在数据库存储的,只要在Access里改就可以了,不需要在客户端设置修改密码等复杂的操作……大概就是这样,不需要太复杂的东西。因为我也是刚上手MFC所以有很多东西都有些疑问,希望各位前辈能帮我解惑:
1.仅使用CSocket类,CDatabase类还有什么CRecordset类之类的,就是最简单的Socket编程和Database编程能不能满足需要?
2.这里涉及到联网的代码是否必须使用CAsyncSocket类?CSocket类感觉操作更方便一点,可否仅使用CSocket类而不使用CAsyncSocket类?
3.CSocket类能不能满足多台电脑同时访问一台电脑上数据库的需要?他们之间的访问是否冲突?
4.使用最基本的数据库编程能不能满足本系统需要?我查找了一些网上的资料,基本都是ADO的,但是感觉很复杂,而经过自己的尝试发现不使用ADO仅仅使用自带的Database编程也可以对数据集进行修改操作(不过不知道如何进行增加和删除操作)请问本系统需要的数据库是否必须使用ADO?
5.是不是使用CSocket使其他机器与本机的通讯需要额外写个协议(应该是自定义的吧)?假定我不需要考虑网络安全方面的问题。
6.看网上的教程,服务端需要两个套接字,一个来侦听一个来发送数据,而客户端只要一个套接字就可以了就是发送,但是如果通过协议通讯的话,是不是客户端也必须要两个套接字一个用来侦听一个用来发送啊?另外服务端的套接字能否用于侦听两台电脑同时发来的消息而导致不会冲突呢?
大致就这样吧,编程方面感觉自己应该有能力,但是有些机制问题确实不是很懂,往高人不吝赐教!
顺便说一下我的大致思路
首先实现服务端与Access的链接,服务端上设置两个套接字一个用于侦听其他电脑发来的信息,一个则用于发送,服务端侦听到其他电脑发来的查询请求时,就进行查询数据库操作,将查询到的数据发送到那一台电脑,如果收到的是修改请求,则修改数据库并回发一条修改成功的信息。报文的类型,比如说是查询请求,修改请求,登陆密码,还有回发的报文的类型,都通过自己写个简单的协议来实现。
客户端方面,不直接与数据库相连,也是设俩套接字,一个用来“主要就是通过客户端的操作”来组报文发到服务端,另一个则是用来侦听回访报文……
你们看这样的思路有没有问题?希望予以一些提示,毕竟本人也刚接触MFC所以思想也比较幼稚 展开
1.仅使用CSocket类,CDatabase类还有什么CRecordset类之类的,就是最简单的Socket编程和Database编程能不能满足需要?
2.这里涉及到联网的代码是否必须使用CAsyncSocket类?CSocket类感觉操作更方便一点,可否仅使用CSocket类而不使用CAsyncSocket类?
3.CSocket类能不能满足多台电脑同时访问一台电脑上数据库的需要?他们之间的访问是否冲突?
4.使用最基本的数据库编程能不能满足本系统需要?我查找了一些网上的资料,基本都是ADO的,但是感觉很复杂,而经过自己的尝试发现不使用ADO仅仅使用自带的Database编程也可以对数据集进行修改操作(不过不知道如何进行增加和删除操作)请问本系统需要的数据库是否必须使用ADO?
5.是不是使用CSocket使其他机器与本机的通讯需要额外写个协议(应该是自定义的吧)?假定我不需要考虑网络安全方面的问题。
6.看网上的教程,服务端需要两个套接字,一个来侦听一个来发送数据,而客户端只要一个套接字就可以了就是发送,但是如果通过协议通讯的话,是不是客户端也必须要两个套接字一个用来侦听一个用来发送啊?另外服务端的套接字能否用于侦听两台电脑同时发来的消息而导致不会冲突呢?
大致就这样吧,编程方面感觉自己应该有能力,但是有些机制问题确实不是很懂,往高人不吝赐教!
顺便说一下我的大致思路
首先实现服务端与Access的链接,服务端上设置两个套接字一个用于侦听其他电脑发来的信息,一个则用于发送,服务端侦听到其他电脑发来的查询请求时,就进行查询数据库操作,将查询到的数据发送到那一台电脑,如果收到的是修改请求,则修改数据库并回发一条修改成功的信息。报文的类型,比如说是查询请求,修改请求,登陆密码,还有回发的报文的类型,都通过自己写个简单的协议来实现。
客户端方面,不直接与数据库相连,也是设俩套接字,一个用来“主要就是通过客户端的操作”来组报文发到服务端,另一个则是用来侦听回访报文……
你们看这样的思路有没有问题?希望予以一些提示,毕竟本人也刚接触MFC所以思想也比较幼稚 展开
- 你的回答被采纳后将获得:
- 系统奖励15(财富值+成长值)+难题奖励30(财富值+成长值)
展开全部
1、够了;
2、用CSocket类也够了;
3、处理得当完全不会有冲突;
4、ADO非常简单,你只需要了解两个东西:ConnectionPtr和RecordsetPtr,前者只需要知道CreateInstance,Open,Execute即可,后者只需要使用MoveFirst,MoveNext,Fields->GetItem()->Value,EOF和BOF即可;
5、协议可以自己定一个,最简单的就是客户端直接传SQL过来,服务器完全不需要解析 :) 当然,对于一个正规的项目不建议这样做;
6、服务器创建一个socket,然后listen即可;
你用CSocket,可以在OnAccept里面创建一个socket来进行Accept操作,然后这个socket接收客户端的请求并发送回应,然后close;而这个Accept的socket操作完全不会影响第一个socket。
2、用CSocket类也够了;
3、处理得当完全不会有冲突;
4、ADO非常简单,你只需要了解两个东西:ConnectionPtr和RecordsetPtr,前者只需要知道CreateInstance,Open,Execute即可,后者只需要使用MoveFirst,MoveNext,Fields->GetItem()->Value,EOF和BOF即可;
5、协议可以自己定一个,最简单的就是客户端直接传SQL过来,服务器完全不需要解析 :) 当然,对于一个正规的项目不建议这样做;
6、服务器创建一个socket,然后listen即可;
你用CSocket,可以在OnAccept里面创建一个socket来进行Accept操作,然后这个socket接收客户端的请求并发送回应,然后close;而这个Accept的socket操作完全不会影响第一个socket。
追问
谢谢你的解答~就是说服务端用一个socket和accept里的一个临时socket就可以了吧,那客户端也需要这么做么?
追答
accept里面的不是临时的,如果也用csocket,那它后续还需要处理onreceive
客户端一个socket足够了
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询