我有一个应用程序从同一端口上的多个组播源接收数据.我能够收到数据.但是,我试图考虑每个组的统计信息(即收到的消息,收到的字节数),所有数据都混淆了.有谁知道如何解决这个问题?如果我试着查看发件人的地址,那么它不是多播地址,而是发送机器的IP.
我使用以下套接字选项:
struct ip_mreq mreq;
mreq.imr_multiaddr.s_addr = inet_addr("224.1.2.3");
mreq.imr_interface.s_addr = INADDR_ANY;
setsockopt(s, IPPROTO_IP, IP_ADD_MEMBERSHIP, &mreq, sizeof(mreq));
Run Code Online (Sandbox Code Playgroud)
并且:
setsockopt(s, SOL_SOCKET, SO_REUSEPORT, &reuse, sizeof(reuse));
Run Code Online (Sandbox Code Playgroud) 我有一个打开并读取相同文件(不写入)的多线程应用程序.我为每个线程打开一个不同的文件描述符(但它们都指向同一个文件).然后每个线程读取文件并关闭它并在达到EOF时再次打开它.这个可以吗?如果我对文件描述符执行fclose()会影响指向同一文件的其他文件descritptors吗?