2011-03-22 137 views
0

我有一個任務要做,我是網絡新手,所以喜歡在編碼之前討論。我必須記下服務器端UDP應用程序。服務器偵聽來自許多客戶端的連接請求(可能是100或更多)。當它收到它時,它會通過幾次來回發送確認與客戶端應用程序瞭解其身份進行握手。建立連接時,它會接收來自客戶端的不同類型的數據,並將其處理並放入sql數據庫並將確認發送回客戶端。定期向客戶發送命令以獲取所需的特定信息。在C#中的多個客戶端的異步UDP服務器

我在Visual Studio 2005中使用C#應該使用多線程嗎?線程池?異步或同步UDP服務器?

在此先感謝。

+0

我在做同樣的事情,你能告訴我..whats爲正確的解決方案? – SANDEEP 2015-04-02 08:36:01

回答

1

你確定你想要的是一個UDP服務器?諸如「連接」,「握手」等術語都與TCP有關。

+0

感謝您對Lex的關注。對不起,有點混亂。我真正的問題是我應該遵循多線程的方式來處理多個客戶端(可能是100),並且他們中的大多數將同時發送數據。我在互聯網上看到的大多數示例都是多線程TCP服務器,意味着連接的單個線程。那麼UDP服務器呢?通過握手,我的意思是服務器和客戶端將會交換加密的數據用於身份識別目的,以確保它是正確的客戶端和服務器。 – user370267 2011-03-22 13:59:07

+0

我使用相同的方法(類似於TCP一)在我的UDP服務器#SNMP,http://sharpsnmplib.codeplex.com/SourceControl/changeset/view/03d2e03be043#SharpSnmpLib%2fMessaging%2fListenerBinding.cs它似乎工作正常。當然還有其他的UDP服務器方法。 – 2011-03-25 04:28:57

0

我會用在服務器端和客戶端異步方法。這會使事情複雜化,特別是在客戶端。

原因是你寫的服務器有時會發送東西給客戶端。這使得不可能通信的一個簡單的請求/應答型(客戶端調用Send,然後使用Receive直至適當的回答已收)。

如果你可以取消這個需求,我會使用同步客戶端(做一些輪詢),這會讓你更容易理解。

如果你有.Net 3.5,你爲什麼不創建一個WCF服務呢?它支持TCP和回調(服務器可以調用客戶端中的東西)。

+0

謝謝jgauffin。那麼我不必爲客戶端寫下來,因爲它已經在硬件中實現了。我的UDP客戶端是機器。我只需要寫一下UDP服務器,它將獲取UDP客戶端發送的數據,並向它們發送響應並向它們發送用於任務的命令。所以wodnering應該遵循多線程,或者我簡單地創建一個套接字,當數據被接收到它回到回調和處理數據。但想知道當大約100個客戶端在同一時間發送數據時,這是否有效。 – user370267 2011-03-23 09:47:28

+0

我會創建一個異步服務器。回調+ BeginReceive/EndReceive是異步編程。 – jgauffin 2011-03-23 09:53:38