我們有一個應用程序,它使用UDP從服務器系統向運行在多臺Windows XP PC上的客戶端應用程序廣播數據。這是在一個局域網上,通常是千兆位。這幾年來運行良好。對同一臺PC上的多個進程的UDP廣播性能不佳
我們現在需要在每臺四核電腦上運行兩個(或更多)客戶端應用程序,每個應用程序實例都接收廣播數據。我用來實現這個的方法是給每個客戶端PC多個IP地址。然後,每個客戶端應用程序使用相同的端口號連接到服務器,但使用不同的IP。這在功能上起作用,但由於某些原因,性能非常差。我的數據傳輸速率降低了10倍!
獲取多個IP地址我已經嘗試使用兩個NIC適配器並將多個IP地址分配給高級TCP/IP網絡屬性中的單個NIC。這兩種方法似乎都表現出差不多的表現。我也嘗試過使用幾個不同的製造商網卡,但這也沒有幫助。
我曾經注意到的一件事是數據似乎會變得更加分散。如果我將20kBytes的數據發送到客戶端,只需一臺個人電腦上的客戶端,它幾乎總能將所有數據全部接收到客戶端。但是有兩個客戶端運行數據似乎大部分都是以一個幀的大小(1500字節)來完成的,所以我的代碼需要迭代多次。但我不希望這會導致如此戲劇性的表現。
所以我想我的問題是否有人知道爲什麼表現如此之慢,如果有什麼可以做到加快速度?
我知道我可以重新設計一些東西,以便服務器只向每臺PC的一個客戶端發送數據,然後客戶端可以將數據鏡像到同一臺PC上的其他客戶端。但這是一個重大的重新設計和重新編碼工作,所以我想保留這個作爲最後的手段。
爲什麼廣播而不是多播?爲什麼你需要使用IP地址的奇怪黑客? –