2011-08-11 21 views
0

通常,您有一對服務器和一對客戶端,或者通過套接字相互連接的兩個對等端。這是一對一的關係。「組」設置中的套接字?

可以說你有6個同齡人。有沒有辦法讓它們在沒有「服務器」的情況下被「分組」在一起,以便1個對等體可以直接向另一個對等體發送udp/tcp消息?

基本上,我正在尋找一種方式來做到這一點,而不必設置每個關係的獨立的插座。

如果這是可能的,什麼是正確的術語?

+0

這聽起來像你正在尋找類似[MPI](http://en.wikipedia.org/wiki/Message_Passing_Interface)。 –

回答

0

UDP套接字可以使用sendto()功能通過非連接的套接字發送數據。指定的終端必須在給定的IP /端口上進行監聽,但不必已經發起連接。

+0

所以你的意思是我可以在每個同行監聽同一端口上的東西,然後讓他們將消息發送到正確的IP通過該端口?連接端口和非連接端口之間是否存在性能差異?這與多播有關嗎? – Luke

+0

如果你希望他們都在同一個端口上監聽,那麼多播就是你想要的。所有套接字都可以加入多播組,並且任何套接字都可以發送所有可以接收的數據。 – Chad

+0

選擇接受的答案很困難,因爲sendto()和多播都是很好的答案。但是,sendto()更具體,並且多播似乎依賴於具有相同的子網。我將使用sendto()將消息發送到一臺或多臺計算機,並在同一子網上使用廣播/多播來檢測計算機。 – Luke

1

與TCP沒有簡單的方法,但用UDP你有multicast

+0

使用組播可以選擇性地決定發送給組中的一臺還是幾臺機器?假設這是一個純軟件解決方案,任何示例(OS X或Linux)? – Luke

+0

以太網多播實際上是通過硬件處理的。 IP組播允許給定的套接字加入多個組 - 比如說,有一個組用於一般通信,並有幾個特定的​​組用於任何應用「域」(儘管真的討厭這些公司話)。預警 - 由於您需要明確的交換機/路由器支持,因此多播通常不適用於廣域網。至於例子 - 你會發現網上有很多。 –

+0

我正在通過LAN進行此操作。那麼你可以在不干擾路由器/調制解調器設置(純軟件)的情況下做到這一點,還是需要網絡上的特殊設置? – Luke