关于ClientSocket和ServerSocket的简单问题(20分)

  • 主题发起人 主题发起人 mrdingsheng
  • 开始时间 开始时间
M

mrdingsheng

Unregistered / Unconfirmed
GUEST, unregistred user!
我用ClientSocket和ServerSocket这两个控件进行Socket连接,Port都是8003,ClientType都采用阻塞方式,同时我要发送数据,我用的是SendText这个函数,但是发送不成功!我已经做过试验了,请问在阻塞方式下要发送数据该用什么方法?谢谢!
 
是无法发出还是无法收到,如果是服务器端无法收到的话跟你服务器端servertype设置有关
如果设置的是:stNonBlocking,在onClientRead事件中通过socket.ReceiveText能够收到;如果设置的是stThreadBlocking,而且没有在onGetThread设置线程,由于TServerClientThread中ReActivate过程中一段错误代码(呵呵,我这么认为)FClientSocket.OnSocketEvent := HandleEvent;
FClientSocket.OnErrorEvent := HandleError;导致TServerSocket的onClientRead事件无法触发。解决方法有两个:1、将上面的两行代码改为:FServerSocket.OnSocketEvent := HandleEvent;
FServerSocket.OnErrorEvent := HandleError;就可以触发TServerSocket的onClientRead事件;2、在TServerSocket的onThreadStart事件中设置Thread.ServerSocket.OnSocketEvent的事件处理程序,在自己的事件处理中也可收到数据;
另外在onGetThread中设置自己的线程也可以解决问题
 
接受答案了.
 
boyman你好,我怎么找不到你说的那两行代码,FClientSocket.OnSocketEvent := HandleEvent;FClientSocket.OnErrorEvent := HandleError;
 
后退
顶部