我在同一個進程中使用了兩個套接字,一個充當多播服務器,另一個充當多播客戶端。我試圖將服務器和客戶端功能結合在一個套接字中。直到現在才能成功。是否有人嘗試將單個套接字作爲多播服務器和客戶端來使用。可能嗎?如果沒有任何說明限制的參考將不勝感激。非常感謝。充當多播服務器和客戶端的Linux套接字
1
A
回答
0
至少在窗口上是可能的。試試下面的例子(沒有錯誤檢查):
SOCKET the_socket = socket(AF_INET, SOCK_DGRAM, IPPROTO_UDP);
sockaddr_in service;
service.sin_family = AF_INET;
service.sin_addr.s_addr = inet_addr("192.168.1.117");
service.sin_port = htons(56565);
int ret = bind(the_socket, (SOCKADDR *) &service, sizeof (service));
unsigned int grpaddr = inet_addr("224.4.4.44");
unsigned int iaddr = inet_addr("192.168.1.117");
//You should have the equivalent function in your existing client
//to join the multicast group
ret = join_source_group(the_socket, grpaddr, service.sin_addr.s_addr, iaddr);
std::string data = "AA";
sockaddr_in group;
group.sin_family = AF_INET;
group.sin_addr.s_addr = inet_addr("224.4.4.44");
group.sin_port = htons(56565);
ret = sendto(the_socket, data.c_str(), data.length(), 0, (const sockaddr*)&group, sizeof(group));
char recvdata[3] = {0};
ret = recv(the_socket, recvdata, 3, 0);
leave_source_group(the_socket, grpaddr, service.sin_addr.s_addr, iaddr);
0
「服務器」和「客戶」是不是這確實適合很舒服到非基於連接的插座條款。特別是對於多播。
所以「多播接收器」和「多播發送器」可能更合適。
你當然可以用同一個套接字一次做兩個套接字。加入一個組來發送消息並不是強制性的,但是如果你這麼做了,你可能會收到你自己的消息(在一些操作系統中,這是可選的,例如使用Linux的setsockopt IP_MULTICAST_LOOP實例)。
「服務器」和「客戶端」實際上是在比多播更高層工作的概念。我希望你能解釋你正在努力做得更好,也許在另一個問題上。
多播發送者或接收者是客戶端還是服務器,完全取決於應用程序。
+0
謝謝你的更正。他們有道理。我的意思是在同一個套接字上的多播接收器和發送器功能。 – Rak
相關問題
- 1. PHP套接字服務器/客戶端
- 2. 客戶端服務器udp套接字
- 3. 套接字java客戶端服務器
- 4. 客戶端 - 服務器套接字
- 5. 服務器/客戶端套接字
- 6. 客戶端服務器套接字C#
- 7. Python服務器客戶端套接字
- 8. Java套接字客戶端/服務器
- 9. Linux的套接字客戶端/服務器程序
- 10. 使用多個端口的套接字客戶端/服務器
- 11. linux套接字:客戶端之前服務器退出
- 12. 客戶端服務器套接字編程c-linux
- 13. 連接多個客戶端的異步套接字服務器
- 14. 讓套接字服務器接受多個客戶端
- 15. 多套接字客戶端連接到服務器
- 16. 客戶端通過套接字連接多臺服務器
- 17. C套接字服務器,Java套接字客戶端:阻塞!
- 18. Python套接字客戶端到Java套接字服務器
- 19. 客戶端 - 服務器Unix套接字和端口轉發
- 20. java套接字服務器和套接字客戶端之間的連接
- 21. 在java中有多個客戶端的套接字服務器
- 22. C#套接字服務器沒有更多的800客戶端
- 23. 同時關閉服務器和客戶端套接字連接
- 24. 客戶端和服務器Android套接字連接
- 25. 無法連接Java套接字服務器和客戶端
- 26. 客戶端和服務器套接字連接
- 27. C#套接字TCP客戶端/服務
- 28. 服務器/客戶端套接字和ObjectOutputStream的
- 29. Java客戶端和帶有套接字的PHP服務器
- 30. c中的客戶端和服務器套接字
謝謝,它的工作。 – Rak