Ошибка SendTO () при отправке трансляции UDP на MacOS (код работает нормально в Windows!)C++

Программы на C++. Форум разработчиков
Ответить
Anonymous
 Ошибка SendTO () при отправке трансляции UDP на MacOS (код работает нормально в Windows!)

Сообщение Anonymous »

У меня есть проблема с отправкой трансляции UDP на macOS с использованием C ++ 11.
Код ниже работает нормально в Windows, но на macOS я получаю -1 обратно из -за моей ошибки? Я думаю, что это просто маленькая ошибка, которую я не вижу. < /P>
#ifdef _WIN32
SOCKET s;
#endif
int recSocket = socket(AF_INET, SOCK_DGRAM, 0);
int askSinlen = sizeof(struct sockaddr_in);
ssize_t askBuflen = MAXBUF;
int recCheckCall;
#ifdef _WIN32
int clientLength;
#elif __APPLE__
socklen_t clientLength;
#endif
int message;

char buf[512];
char askStatus;
char status;
char askBuffer[MAXBUF];
struct sockaddr_in sock_in, server_adress, client_adress, client_adress2;
char askYes = 1;
DEBUG_LOG(35, "Im Boradcast");
#ifdef _WIN32
WSADATA w;
if (int result = WSAStartup(MAKEWORD(2, 2), &w) != 0) // Zugriff auf Winsock Libary
{
DEBUG_LOG(300, "WSA Startup failed");

return -1;
}
#endif

recSocket = socket(AF_INET, SOCK_DGRAM, 0);
if (recSocket == -1)
{
DEBUG_LOG(301, "Receive Socket Error");
#ifdef _WIN32
closesocket(recSocket);
#elif __APPLE__
close(recSocket);
#endif
return -2;
}

sock_in.sin_addr.s_addr = htonl(INADDR_ANY);
sock_in.sin_port = htons(4028);
sock_in.sin_family = PF_INET;

client_adress.sin_family = PF_INET;
client_adress.sin_port = htons(4029);
client_adress.sin_addr.s_addr = htonl(-1);

status = bind(recSocket, (struct sockaddr *)&sock_in, askSinlen);

if (status == -1)
{
DEBUG_LOG(302, "Fehler beim binden des Sockets");
#ifdef _WIN32
closesocket(recSocket);
#elif __APPLE__
close(recSocket);
#endif
return -3;
}
status = setsockopt(recSocket, SOL_SOCKET, SO_BROADCAST, &askYes, sizeof(askYes));

sprintf(askBuffer, "Ciao");
askBuflen = strlen(askBuffer);
status = sendto(recSocket, askBuffer, askBuflen, 0, (struct sockaddr *)&client_adress, sizeof(client_adress));
if (status < 0)
{
DEBUG_LOG(status, "Fehler ist: ");
DEBUG_LOG(303, "Fehler beim senden des Broadcastes");
#ifdef _WIN32
closesocket(recSocket);
#elif __APPLE__
close(recSocket);
#endif
return -4;
}


Подробнее здесь: https://stackoverflow.com/questions/341 ... on-windows
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C++»