我现在做一个客户端、服务器通信问题,客户端不与数据库接触,而是服务器去查询数据库;客户端需要发送什么样的命令通知服务器去查询数据并把数据返回给客户端呢?有几个问题需要请教:
1.客户端发送指令的类型,如何定义呢?
2.服务器返回数据结果集的类型?
3.发送数据的大小是否限制,如果太多数据要怎么处理呢?希望大侠们能给个具体实现的代码,比如定义类型,如果发送和接收这些! 刚接触Delphi,对通信没什么概念!诚心求助!谢谢!delphi服务器客户端通信socket
1.客户端发送指令的类型,如何定义呢?
2.服务器返回数据结果集的类型?
3.发送数据的大小是否限制,如果太多数据要怎么处理呢?希望大侠们能给个具体实现的代码,比如定义类型,如果发送和接收这些! 刚接触Delphi,对通信没什么概念!诚心求助!谢谢!delphi服务器客户端通信socket
关于指令。你可以再一个单元内定义一些常量。
比如
DB_Query:Byte=1;
DB_Get:Byte=2;
DB_Modify:Byte=3;
这样的,再比如你查询又要分为按更多东西查询。
那么你就可以定义集合
QueryMode=(Name,Index,Number);等等 你需要多少方式就添加多少种集合类型
这个作为公共单元。你服务端和客户端都要引用的。
然后就是进行TCP/IP通信了。
如何组织通信协议呢。
那么开头就是操作方式了那么你可以用一个控制字符,比如用#吧
操作模式#具体方式。
比如你要用名字:王小明查询一个数据库的信息。
DB_Query#QueryMode#Name.
这样组合成一个字符串
就是;
1#0#王小明
将这个发给服务端。
服务端接受到信息后。
首先分割字符。用#分成3分
1
0
王小明
那么服务端就知道你是要查询。
并且模式是用名字。
名字是王小明。
进行一番操作之后返回给客户端。客户端再按照一定的结构对服务端返回的数据进行分析
再显示出来即可。
通信组件你可以用INDY
delphi自带的。
也可以用Jsocket这个控件。小巧方便。
大概就是这样了。
首先谢谢楼上的回答,其次YiLuSuiYun回答,字符串的发送接收感觉不太合理,因为如果有其他字符会涉及到,比如#,那么分割结果就会有问题,有没有其他方式呢? 望指导!
具体的看你应用是什么样的场景.
http://download.csdn.net/detail/geoff08zhang/4571358