2011-03-22 107 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