TTcpServer/TTcpClient间通讯,如何保持连接时进行多次交互通讯。(200分)

J

juchen

Unregistered / Unconfirmed
GUEST, unregistred user!
刚才我用TTcpServer(线程形式,即delphi7自带例子)和TTcpClient通讯时,
发现只有客户端断开连接的时候才可以把消息发送给服务端,
delphi7的例子就是客户端每次发送消息的时候先连接——再写消息——再断开。
是否可以通过客户端一开始就连上进行交互通讯到最后才断开(注:现在这种情况,如果不断开那么将看不到客户端发来的消息直接最后断开消息)呢。
 
我用Socket API写了一个简单的TCP的例子,可以做到“保持连接时进行多次交互通讯”:
http://www.playicq.com/dispdoc.php?id=2148
 
>发现只有客户端断开连接的时候才可以把消息发送给服务端,
没有这样的事吧, 你可以先连上, 要发的时候就发啊, 当然也可以想发的时候才连上, 发了就断开, 不过这好象没什么好处.
 
确实delphi7下的NetChar例子时只有TcpClient1.Disconnect命令执行后服务端TcpServer1才会收到消息。
 
呵呵, 会不会是D7的BUG啊, 那个我没用过, 但D6下面的相关的东西都没这个问题,
应该INDY也没有, 我在用, 所以你可以用一下INDY看看.
 
不用断开你也能收到,
其实那些数据Server已经收到了,只是没有。。。。呵呵
你去读一个字节试试,看看有没有东西。
=============
这样可以可以解决呢?
两过定义好的数据结构,
比如
TMyPack = record
nLen: Integer; // 此包的长度
。。。。。。。。
end;
你先读到nLen 就知道这个包有多大了,再读其它的,就是一个完整的包了。
 
多人接受答案了。
 
顶部