0

我有一个客户端,我希望服务器(从高级)在 OnClientConnect 事件中识别他,这可能吗?

我需要在 TClientSocket 的 OnConnect 事件中做些什么吗?

例如,如果我从 onconnect(客户端)事件发送一个字符串,它将到达 onclientread 事件(服务器端),而不是我想知道是否有任何方法可以使它到达 onclientconnect 事件。

如果有更简洁的方法,请告诉我。;]

4

1 回答 1

0

如果您使用TServerSocketin 非阻塞模式(其默认模式),那么您必须等待OnClientRead事件进行任何读取。您可以使用该TCustomWinSocket.Data属性来跟踪您是否已阅读第一个字符串。您可以在事件中初始化该跟踪,OnClientConnect然后在事件中更新它OnClientRead。如果其他代码需要访问客户端,在读取第一个字符串之前不要对其进行任何操作。

要考虑的另一件事 - 想象一下,如果客户端连接并且没有发送任何内容。如果您的服务器在该事件中阻止自己等待字符串,这将为 DOS 攻击创建一个入口点。该OnClientConnect活动不是阅读的好地方。

如果您绝对需要在OnClientConnect事件中进行读取,则改为切换TServerSocket到线程阻塞模式。

于 2013-04-21T16:19:04.400 回答