Как работает connect
в UDP, он реагирует как то или нет?
этот код у меня не работает, он всегда пропускает ошибку, даже если сервер отключен. Можно заставить его ждать пока не включиться сервер или хотя бы выдать ошибку соединения?
for (AI = AddrInfo; AI != NULL; AI = AI->ai_next) {
// Open a socket with the correct address family for this address.
ConnSocket = socket(AI->ai_family, AI->ai_socktype, AI->ai_protocol);
printf("socket call with family: %d socktype: %d, protocol: %d\n",
AI->ai_family, AI->ai_socktype, AI->ai_protocol);
if (ConnSocket == INVALID_SOCKET)
printf("socket call failed with %d\n", WSAGetLastError());
//**** DEBUG END
if (ConnSocket == INVALID_SOCKET) {
fprintf(stderr, "Error Opening socket, error %d: %s\n",
WSAGetLastError(), PrintError(WSAGetLastError()));
continue;
}
//
// Notice that nothing in this code is specific to whether we
// are using UDP or TCP.
//
// When connect() is called on a datagram socket, it does not
// actually establish the connection as a stream (TCP) socket
// would. Instead, TCP/IP establishes the remote half of the
// (LocalIPAddress, LocalPort, RemoteIP, RemotePort) mapping.
// This enables us to use send() and recv() on datagram sockets,
// instead of recvfrom() and sendto().
//
printf("Attempting to connect to: %s\n", Server ? Server : "localhost");
if (connect(ConnSocket, AI->ai_addr, (int)AI->ai_addrlen) != SOCKET_ERROR)
break;
i = WSAGetLastError();
if (getnameinfo(AI->ai_addr, (int)AI->ai_addrlen, AddrName,
sizeof(AddrName), NULL, 0, NI_NUMERICHOST) != 0)
strcpy_s(AddrName, sizeof(AddrName), UNKNOWN_NAME);
fprintf(stderr, "connect() to %s failed with error %d: %s\n",
AddrName, i, PrintError(i));
closesocket(ConnSocket);
}
if (AI == NULL) {
fprintf(stderr, "Fatal error: unable to connect to the server.\n");
WSACleanup();
return -1;
}
В UDP протоколе нет понятия соединения. Протокол оперирует только понятием пакета. Соответственно вызов функции connect()
не имеет смысла.
Для отправки/приема данных по UDP протоколу используют функции sendto()
/recvfrom()
.
А еще в UDP протоколе нет подтверждения пакетов. Поэтому узнать обработал ли кто-то ваш пакет невозможно
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Вечер добрый! Есть std::map myMap, который я заполнил из filetxt файла(заполнился и отображается корректно) 1 qwerty 2 sef 3 hhhh
Не могу создать переменную структуруЕсли мы объявляем структуру в том же файле где и main функция, то все инициализируется нормально
При удалении спрайта функциями this->removeChild(sprite,true); или this->removeChildByTag(1) или sprite->removeFromParent(); вылетает играВ чём заключается проблема? Вроде...
Есть такой код, как я понял он полностью отключает соединения, мне интересно для чего его используют в UDP сетиИли его вообще не используют...