我需要一些指针(工作的例子将是美好的)在以下问题。我是套接字编程的新手,虽然不是.net,但不介意在VB或c#中有任何帮助。TCPListener多个端口
我有一个“客户”系统,它会吐出数据的常规块(其实际上是ASCII)每几个(让说,10)秒。数据的尺寸很小,可能小于1K,我可以让每个输出按特定顺序分隔(如<EoM>
)。这个“客户端”将输出到多个(多于1个,少于5个)不同的端口。
我需要编写一个服务器,它将打开所需数量的端口,监听它们以获取数据。当一个消息到达其中一个端口时,最后使用<EoM>
定界符,我希望能够获取该数据,然后对其进行处理(解析并输入数据库以获取信息)。并继续聆听下一条数据到达。这需要对所有定义的端口进行。如果客户端应该断开连接,我希望端口能够等待并监听重新连接,然后像以前一样继续处理。但作为一个单一的客户端将进行通信,我假设如果1端口断开连接,可以重新启动服务器进程,如果这比断开连接后再听更容易。
很抱歉的长期并不十分确切的问题,就像我说的,是新的Socket编程,所以如何做到这一点任何实际的例子,将不胜感激。最终的结果理想情况下是一个Windows服务,但是我希望将它作为一个表单应用程序启动,直到我将它全部用于调试。
干杯任何帮助。
你要求的不是你想要的。所有的客户端都应该连接到同一个服务器端口,如果发生断开,客户端应该重新连接。应该不需要重新启动任何进程 - 这对服务进程来说会有些不便:) –
2012-08-07 10:55:32
TCP/IP不处理消息,只是一个字节流。期望从任意点点滴滴中重新组合你的“大块数据”。 [This](http://stackoverflow.com/questions/11804131/asynchronous-tcp-socket-bytes-merging/11804312#11804312)可能会有所帮助。 – HABO 2012-08-07 10:59:42
通常,应用程序在端口上侦听连接请求。收到请求后,会打开另一个端口与新客户端通信。原始端口可以继续侦听其他连接请求。根据您的应用程序,您可能想要监听单个端口号并接受客户端的多个连接。连接后每个客户端都可以识别自己。您的应用程序将管理与您所期望的设置有关的重复或丢失客户端的任何问题。 – HABO 2012-08-07 11:06:55