7

私は C++ ソケット プログラミングを勉強しています... サーバー プログラムはソケットにバインドし、接続要求のリッスンを開始します... では、リッスンした要求の IP アドレスを一覧表示するにはどうすればよいでしょうか? 接続を受け入れた後にIPアドレスを取得できることは知っていますが、特定のIPアドレスからの接続を受け入れたくないとしましょう...

4

3 に答える 3

7

Windows でのみ、WinSock2 のWSAAccept()関数の条件付きコールバック機能を使用して、接続を受け入れる前にクライアント情報にアクセスしたり、接続を受け入れる前に接続を拒否したりすることもできます。

于 2012-05-23T22:46:47.733 に答える
5

これは、標準のソケット API に関しては実行できません。私が知っているすべてのプラットフォームで、アプリケーションが保留中の要求を監視する前に、システムは実際に接続を受け入れます (つまり、SYN+ACK TCP データグラムで応答します) 。

于 2012-05-23T20:25:35.367 に答える
3

最適なパフォーマンスを得るには、ネットワークスタックでフィルタリングすることで解決できますが、その詳細はオペレーティングシステムによって異なります(これはソケットインターフェイスの一部ではなく、アプリケーションには通常、ネットワークを構成する権限がない場合があります)。このように積み重ねます。)

もう1つの機会は、acceptTCPレベルで接続がすでに受け入れられている(CONNECT ACK)後です。

私はあなたがそれを好む中間段階でそれをすることができないと思います。しかし、それはとにかく後でそれを行うことと大差ありませacceptん。

于 2012-05-23T20:30:53.467 に答える