我真的是C#的新手,所以 目前我正在研究這個局域網使者,供學校使用。信使本身的代碼,包括我在互聯網上找到的服務器和客戶端,所以我沒有自己編寫它的全部代碼。發送和接收消息的基本代碼已被複制。無論如何!我與垃圾聊天的人有問題。客戶端包含連接選項,以及用於所有傳入消息的多行文本框,用於編寫消息的文本框和用於發送消息本身的發送按鈕。有沒有辦法阻止人們「發送垃圾郵件」的聊天客戶端?例如,如果用戶在2秒內發送5條消息,則鎖定「發送消息」文本框。這怎麼能做到?它不必鎖定文本框,只要它阻止垃圾郵件用戶發送更多郵件即可。 提前致謝C#聊天客戶端聊天垃圾郵件自動攔截
0
A
回答
4
首先要考慮的是永遠不要相信客戶端。這意味着任何能夠訪問您的源代碼或者甚至知道服務器使用的協議的人都可以編寫自己的客戶端,並且可以整天發送垃圾郵件。
假設垃圾郵件來自使用您提供的客戶端的用戶,那麼您肯定可以計算給定時間範圍內發送的郵件數量,並在超出閾值時禁用發送按鈕。
假設這是使用的WinForms,以阻止按鈕的代碼會是這樣的:
btnSend.Enabled = false;
要跟蹤在近代歷史上發送的消息的數量,你可以創建類似
並在其中放置時間戳。
當某人發送消息時,做到這一點:
- 從列表中刪除是超過所有條目(說)2秒老
- 添加新條目列表
- 如果列表計數>(說)5,禁用發送按鈕,並丟棄此消息
在這一點上,你需要啓動一個計時器來清除阻塞狀態。看看
http://msdn.microsoft.com/en-us/library/system.windows.forms.timer.aspx
,看看它是如何工作。
0
也許每次用戶發送消息時都會有計數器向上計數,並且如果計數器達到5,則可以執行任何您想要的操作來防止用戶發送另一條消息。然後只需用Timer對象每2秒重置一次計數器即可。
int spam = 0;
Timer timer = new Timer(2000);
timer.Elapsed += new ElapsedEventHandler(timer_Elapsed);
timer.Enabled = true;
static void timer_Elapsed(object sender, ElapsedEventArgs e)
{
spam = 0;
}
if (spam < 5)
{
//send message as usual
spam++;
}
else
//notify user that sending messages has been disabled, please wait 'x' seconds to send another message
相關問題
- 1. ASP.NET聊天客戶端
- 2. php聊天客戶端
- 3. 與GWT聊天客戶端
- 4. Android的聊天客戶端
- 5. python聊天客戶端庫
- 6. C#WPF聊天客戶端線程
- 7. 客戶端全局表C:聊天室
- 8. C++服務器客戶端聊天
- 9. 如何在XMPP聊天客戶端自動打開聊天匡威.js
- 10. jQuery聊天應用程序垃圾郵件
- 11. 在C#中創建客戶端/服務器聊天客戶端
- 12. Java聊天客戶端和服務器
- 13. 聊天客戶端的驗收測試
- 14. JQuery/PHP聊天客戶端幫助
- 15. UDP多客戶端聊天服務器
- 16. Openfire限制聊天客戶端
- 17. 聊天客戶端程序問題
- 18. 聊天服務器客戶端輸出
- 19. (聊天)服務器和客戶端
- 20. TCP的java聊天,客戶端不聽
- 21. java聊天客戶端的HTML接口
- 22. 手機上的聊天客戶端
- 23. tcp聊天客戶端同步
- 24. Java多客戶端聊天服務器
- 25. Java聊天客戶端GUI的建議
- 26. 的Android啪聊天客戶端
- 27. Python格式化的聊天客戶端
- 28. 如何實現聊天客戶端
- 29. Java客戶端/服務器聊天
- 30. 如何將Google Talk(〜環聊)添加到Pidgin聊天客戶端?