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