关于TClientSocket工作于ctNonBlocking模式下的问题(可能比较偏门的问题)(100分)

  • 主题发起人 主题发起人 zzhuz
  • 开始时间 开始时间
Z

zzhuz

Unregistered / Unconfirmed
GUEST, unregistred user!
问题景:
使用TClientSocket,ctNonBlocking方式。
在我的初始化函数里,把SOCKET OPEN后程序接着向对方发送数据(登陆)。
在ctNonBlocking方式下,使用OPEN方法后还要经过OnConnecting等事件 后这SOCKET才可以收发数据的。之前有一个解决的方法是在OPEN跟SendText之间加上一句Application.ProcessMessages,把程序中断处理先处理其他的事件,从而解决这问题。

问题的提出:
现在我要写一个类,里面封装了TClientSocket跟一些函数,其中也包括初始化的方法。现在问题出现了,在我自写的类里找不到Application这变量。我不知怎样才能绕过那些事件而令SOCKET OPEN后马上可收发数据。
请问怎样才能解决这个问题呢?现在最坏的打算是把SOCKET改成阻塞型的(改动将会非常大)。期待中。。。
 
在你的类中加入Uses Forms就行。
 
用这个工作量可以自己封装win socket啦,这样想怎么样控制都可以了。
 
你的SendText应该在OnConnected里加,否则对于一些 Internet的IP是会出问题的,
 
to 特尔斐
Uses Forms后果然行了。但我一点也不了解Forms跟Application的关系,如果这个类用在NT SERVICE(非winform)上也可以吗?

to 张无忌:
把SendText放到OnConnected中也是一个方法,但我的初始化函数怎样得知是否成功把登录请求发出去了呢?学习~~
 
"对于一些 Internet的IP是会出问题",这问题会是怎样的问题呢?我网络编程的经验很浅,望指教~~
 
后退
顶部