C中的套接字是否提供任何方式來限制基於IP的傳入連接到套接字的數量?限制基於IP的傳入TCP連接
例如,要阻止一個客戶端IP發送垃圾郵件連接,是否有辦法限制IP可以連接到套接字的次數?
或者做這樣的事情必須定製?
C中的套接字是否提供任何方式來限制基於IP的傳入連接到套接字的數量?限制基於IP的傳入TCP連接
例如,要阻止一個客戶端IP發送垃圾郵件連接,是否有辦法限制IP可以連接到套接字的次數?
或者做這樣的事情必須定製?
我覺得你正在談論的真正意圖是節流,即對於特定的客戶端/連接,在給定的時間內只允許固定數量的數據包。這聽起來像是比允許/禁止更多連接更現實的使用場景。
大多數現代語言提供某種支持,如java或c#,但不是c。
但是,這是一個實現它的優雅方法。我自己已經在生產代碼中使用它。
沒有什麼標準的插座API中的是,沒有。使用標準API,服務器代碼可以做的唯一事情是客戶端連接accept()
,檢查其IP,然後根據需要關閉連接。
對於Microsoft的WinSock API,WSAAccept()
函數確實有一個回調,在從服務器的隊列接受連接之前調用。回調函數可以決定接受連接,拒絕連接或將其保留在隊列中。
你爲什麼問?你在想什麼樣的服務器?我相信'連接'成本比'發送'更多。閱讀關於C10K問題http://en.wikipedia.org/wiki/C10k_problem –
它在防火牆中更容易實現 - 例如Linux上的iptables。 – Julian