情况1:
TServerSocket stNonBlocking
TClientSocket ctNonBlocking
服务端与客户端用sendtext互发文本都能接收到。
情况2:
TServerSocket stThreadBlocking
TClientSocket ctNonBlocking
为什么只有服务端用sendtext发文本客户端能接收到,而客户端发服务端却不能接收。Accept与OnRead都不触发呢?
我用TcpServer与TcpClient在情况2下都能接收,是不是前一组控件存在Bug啊?
请大家一起来探讨,分不是问题。我想这也是初学都想知道的问题。
TServerSocket stNonBlocking
TClientSocket ctNonBlocking
服务端与客户端用sendtext互发文本都能接收到。
情况2:
TServerSocket stThreadBlocking
TClientSocket ctNonBlocking
为什么只有服务端用sendtext发文本客户端能接收到,而客户端发服务端却不能接收。Accept与OnRead都不触发呢?
我用TcpServer与TcpClient在情况2下都能接收,是不是前一组控件存在Bug啊?
请大家一起来探讨,分不是问题。我想这也是初学都想知道的问题。
我要的是答案,不是空头的批评。而且明显是个“?”号,我又没断言它有Bug。
delphi的stThreadBlocking help里面有个简短的例子。
我只能凭记忆给你说了。ServerSocke好像有个 OnThreadStart和OnThreadEnd,
每次有新的连接都会触发这个OnThreadStart事件,
这个函数的参数有一个就是现成的据柄,不过他是空的,你需要自己建立一个线程,这个线程需要你自己声明类,他应该是从 TServerClientThread继承下来的,里面用流的方式操作。你在网上搜索一下 TServerClientThread 应该有很多文章。
随便给你找了一个 http://www.delphibyte.com/article/viewart.php?id=20borland 6开始采用了Indy来替代borland自己的Socket控件,我没用过IdTcp这些,只是简单的看了一下,他的比较方便了,感兴趣你也可以研究一下。最后说句废话,解决问题跟重要的是学会解决问题的方法,这么个小问题你居然在网上放了n天,找到切入点网上哪儿都能找到答案。