一种在OnClientConnect事件中标识套接字的方法?

时间:2013-04-21 14:46:54

标签: delphi winsock

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

我是否需要在TClientSocket的OnConnect事件中执行某些操作?

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

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

1 个答案:

答案 0 :(得分:0)

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

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

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