任何人都可以提供帮助,我试图想出我需要做什么,我已经被赋予了在TCP(UDP)中编写服务器和客户端的任务。基本上多个客户端将连接到服务器..并且服务器将MESSSAGES发送到客户端。
我在创建服务器和客户端方面没有问题但是使用tcp我不确定该怎么做。是.net 3.5支持所有内容还是我需要继续搜索某些组件?
我正在寻找用于TCP或UDP的c#的好例子。这是我不是100%肯定的地方..据我所知,有UDP和TCP ... 1连接,1不是..那么我去哪个方式,可以c#支持两个?优点/缺点?
假设服务器必须支持多个客户端,我只需要打开1个端口或者我需要打开2个端口吗?
此外,如果客户端崩溃,我需要它不影响SERVER,因此服务器可以忽略它并关闭连接,如果一个打开或超时连接...如果实际上需要再次连接回到tcp UDP
我想知道哪些想法并选择我需要分配的协议和端口数量?
感谢
答案 0 :(得分:3)
UDP cons:
UDP优点:
如果你也在考虑TCP,你甚至不应该考虑UDP。如果你正在考虑使用TCP意味着你正在考虑一个流(一次订购消息),那么使用UDP会给你的应用程序带来碎片,重试和确认,重复检测和排序的负担。您将很快在您的应用程序中重新发明TCP,并且花费了20年的时间让所有工程师 正确(或者至少与IPv4中的相同)。
如果您不熟悉这些主题,我建议您使用流程并使用WCF,至少它为您提供了相对轻松地切换和切换各种传输和协议的优势。如果您使用原始.Net套接字组件做出错误的选择,将更难以将代码库从TCP更改为UDP,反之亦然。
答案 1 :(得分:2)
听起来我不清楚TCP和UDP之间的区别。
TCP是面向连接的。即2个对等体将具有专用连接。保证数据包传输和订购。通常,服务器将显示一个端口,并且多个客户端可以连接到该端口(考虑HTTP服务器和浏览器)。
UDP是无连接的。它不保证数据包传输,也不保证订购。您可以非常轻松地实现广播和多播机制。如果您需要某种可靠性,则必须在UDP之上实现此功能。有时您可能不在乎,只是发出请求并在没有响应时重试(SNMP会这样做)。因为它是无连接的,所以你并不担心同伴的上升/下降。如果需要,您只需重试。
因此,您对协议的选择取决于上述内容。例如您的客户端是否需要与服务器的专用连接?您是否将相同的数据传输到多个客户端?你能容忍数据包丢失(例如实时价格更新等)。也许在您的应用程序中使用TCP和UDP来满足不同的需求(例如,TCP用于注册订单,UDP用于传输价格更新/事件?)
我会考虑您的要求,并熟悉TCP和UDP的限制和功能。这应该让事情变得更加清晰。
答案 2 :(得分:1)
是否要求在如此低的水平上执行此操作?为什么不使用WCF?它完全支持使用二进制数据传输通过TCP / IP进行消息传递,但它比原始套接字具有更高的抽象级别。
答案 3 :(得分:0)
您需要的一切都在.Net 3.5(可能在下面)。查看MSDN上UdpClient课程的文档和示例,了解如何编写客户端/服务器。快速谷歌在C#的许多其他网络示例中找到了server和client的www.java2s.com示例代码。不要被域名推迟。