0

私はクライアントを持っています.OnClientConnectイベントでサーバーに(高度なものから)彼を識別させたいのですが、それは可能ですか?

TClientSocket の OnConnect イベントで何かをする必要がありますか?

たとえば、onconnect (クライアント側) イベントから文字列を送信すると、onclientread イベント (サーバー側) に到達します。代わりに、onclientconnect イベントに到達させる方法があるかどうかを知りたいです。

もっときれいな方法があれば教えてください。;]

4

1 に答える 1

0

TServerSocket非ブロック モード (デフォルト モード) でを使用する場合は、OnClientReadイベントが読み取りを行うまで待機する必要があります。プロパティを使用してTCustomWinSocket.Data、最初の文字列を読み取ったかどうかを追跡できます。イベントでそのトラッキングを初期化してから、OnClientConnectイベントで更新できますOnClientRead。他のコードがクライアントにアクセスする必要がある場合は、最初の文字列が読み取られるまで何もしないでください。

考慮すべきもう 1 つのこと - クライアントが接続して何も送信しなかった場合を想像してみてください。サーバーがそのイベントで文字列を待機すること自体をブロックすると、DOS 攻撃のエントリ ポイントが作成されます。イベントは読書をするのOnClientConnectに適した場所ではありません。

OnClientConnectイベントで絶対に読み取りを行う必要がある場合は、TServerSocket代わりにスレッド ブロッキング モードに切り替えます。

于 2013-04-21T16:19:04.400 に答える