关于网络通讯。(张无忌富豪!帮我看看呀,他们让我找你) (100分)

  • 主题发起人 主题发起人 cjsam
  • 开始时间 开始时间
C

cjsam

Unregistered / Unconfirmed
GUEST, unregistred user!
我准备用TclintSocket 和TServerSocket两个控件实现c/s的通讯
因为力求简单,他们之间我定义了帧交互的通讯,比如
帧1:c->s,连接请求 假设处理过程:procedure processFrame1(data:string);
帧2: s->c,请求响应 假设处理过程:procedure processFrame2(data:string);
帧3:c->s,发送文件 假设处理过程:procedure processFrame3(data:string);
帧4:s->c,接受文件响应。 假设处理过程:procedure processFrame4(data:string);
帧5:c->s,发送命令 假设处理过程:procedure processFrame5(data:string);
帧6:s->c,接受命令响应。 假设处理过程:procedure processFrame6(data:string)
。。。。。。。。。..
还有很多来往的帧交互。我现在想问问,
就是程序在运行的时候,我上面那些实现的处理帧的过程应该在TclintSocket 和TServerSocket的什么事件里运行?
比如:帧1的处理是在客户段发起连接的。那帧2的东西在TclintSocket中onread()事件中接收到,那我怎的再发送帧1的处理过程?这个之间的运行的逻辑关系,我没搞明白,请大家指点,最好是有过这样的详细的例子。
 
去问张无忌。
 
这个嘛,有两种通信的方法,阻塞和事件触发,相对而言阻塞简单一点,客户发出 信息之后线程处于等待状态,直到服务端的回音,客户端和服务端好比在踢皮球...
张无忌应该会说:— 你去看看书..:)[:D]
 
我要问的意思是:
比如客户端在收到数据的处理后,才知道下一步该发送哪个帧出去,可能根据收的结果来确定发送不同的帧,客户端有onread()事件,它处理后调用的其他过程或者函数又怎的触发到客户端的onwrite()事件呢?
 
另外还有个问题就是,TclintSocket 和TServerSocket之间不会只是一对一的关系吧?
可以不可以多个TclintSocket连接到一个TServerSocket?我想应该可以吧。如果这样的话,我想问的就是,如果有N个TclintSocke连接到了一个TServerSocket,那么,不是TCP/IP嘛,常连接,我不断开N个中的任何一个的话,他们应该自己在校验连接吧?我如果想从服务端发起主动通讯TServerSocket,我怎样选择TServerSocket发出的消息发到哪个TclientSocket去收呢?
 
当然TServerSocket是同时处理多个TClientSocket的连接
至于如何TServerSocket发送数据到哪个TClientSocket,自己做记录,
通过哪个OnRead里的哪个参数来判断是收到哪个TClientSocket 发过来的数据
以前的帖子里有很多讨论这个方面的内容,找来看看,
 
那我前面说的那些问题呢?他们运行起来的逻辑关系怎样处理的?
你可以不可以给我举例说名一下,假设有3个客户连接一个服务器,这个内部处理流程怎样走的?
谢谢?
 
在seversocket的onread()的事件里,
sever收到一个消息,就会给相应的client发回消息
很简单的

 
张兄,能不能提供一些有关网络通讯及控制的源代码弓给我们学习啊?
 
人人有份!
 
后退
顶部