我有一个客户端,我希望服务器(从高级)在 OnClientConnect 事件中识别他,这可能吗?
我需要在 TClientSocket 的 OnConnect 事件中做些什么吗?
例如,如果我从 onconnect(客户端)事件发送一个字符串,它将到达 onclientread 事件(服务器端),而不是我想知道是否有任何方法可以使它到达 onclientconnect 事件。
如果有更简洁的方法,请告诉我。;]
如果您使用TServerSocket
in 非阻塞模式(其默认模式),那么您必须等待OnClientRead
事件进行任何读取。您可以使用该TCustomWinSocket.Data
属性来跟踪您是否已阅读第一个字符串。您可以在事件中初始化该跟踪,OnClientConnect
然后在事件中更新它OnClientRead
。如果其他代码需要访问客户端,在读取第一个字符串之前不要对其进行任何操作。
要考虑的另一件事 - 想象一下,如果客户端连接并且没有发送任何内容。如果您的服务器在该事件中阻止自己等待字符串,这将为 DOS 攻击创建一个入口点。该OnClientConnect
活动不是阅读的好地方。
如果您绝对需要在OnClientConnect
事件中进行读取,则改为切换TServerSocket
到线程阻塞模式。