Код работает нормально в Windows, но на Mac я получаю -1 обратно от моей функции Sendto, возможно, вы видите мою ошибку. < /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 ... n-win-fine