Здравствуйте, господа!
Пишу программу на VisualC для пересылки данных по UPD мультикастом.
Испытание на одной машине проходят удачно - клиент ловит сообщения сервера. Но при раздельном испытании клиент проявляет острую слепоту. При проверке сниффером оказалось, что сервер честно шлет пакеты на указанный ему адрес 234.5.6.7, а клиент вопреки указанному ему в коде того же адреса, считывает из непонятно откуда взявшегося 0.254.18.0... %)
Серверная часть у мня выглядит так:
#define DESTINATION_MCAST "234.5.6.7"
...
nRet=setsockopt(hSock,IPPROTO_IP,IP_MULTICAST_LOOP,(char FAR *)&nOptVal, sizeof(int));
nRet = setsockopt (hSock, IPPROTO_IP, IP_MULTICAST_TTL, (char FAR *)&nOptVal, sizeof(int));
sockaddr_in stDestAddr;
stDestAddr.sin_family = AF_INET;
stDestAddr.sin_addr.s_addr = inet_addr (DESTINATION_MCAST);
stDestAddr.sin_port = htons (DESTINATION_PORT); ---
В клиентской версии:
#define DESTINATION_MCAST "234.5.6.7"
...
sockaddr_in stSrcAddr;
stSrcAddr.sin_family = AF_INET;
stSrcAddr.sin_port = htons (DESTINATION_PORT);
stSrcAddr.sin_addr.s_addr = INADDR_ANY;
...
mreq.imr_multiaddr.s_addr = inet_addr (DESTINATION_MCAST);
...
nRet = setsockopt (hSock, IPPROTO_IP, IP_ADD_MEMBERSHIP,(char FAR *)&mreq, sizeof (struct ip_mreq));
---
При отладке смотрел - у клиента айпишник в stSrcAddr прописывается нормально. Где я на портачил?
|