Отправка Float с сервера на клиент через сокет (UDP) - PullRequest
0 голосов
/ 12 марта 2020

Итак, я пытаюсь отправлять поплавки туда-сюда между клиентами и сервером. Я могу отправить поплавки на сервер, и сервер читает их отлично. Но, к сожалению, я не могу заставить сервер отправлять запросы другим клиентам. Наш текущий код, который не работает, выглядит следующим образом.

Функция отправки на стороне сервера

int Server::Send(float dt) {
{

    char message[BUFLEN];

    std::string msg = std::to_string(x2) + "@" + std::to_string(z2);

    strcpy(message, (char*)msg.c_str());

    if (sendto(server_socket, message, sizeof(message), 0, ptr->ai_addr, ptr->ai_addrlen) == SOCKET_ERROR)
    {
        std::cout << "Sendto() failed..." << std::endl;
    }
    else
    {
        std::cout << "Sent: " << message << "\n" << std::endl;
    }

Получение на стороне клиента

int Client::Recieve(float dt) {

    char buf[BUFLEN];
    struct sockaddr_in fromAddr;
    int fromlen;
    fromlen = sizeof(fromAddr);

    memset(buf, 0, BUFLEN);

    int bytes_recieved = -1;
    int sError = -1;

    bytes_recieved = recvfrom(client_socket, buf, BUFLEN, 0, (struct sockaddr*) &fromAddr, &fromlen);

    sError = WSAGetLastError();

    if (sError != WSAEWOULDBLOCK && bytes_recieved > 0)
    {
        std::cout << "Recieved: " << buf << std::endl;

        std::string tmp = buf;
        std::size_t pos = tmp.find("@");
        tmp = tmp.substr(0, pos - 1);
        x2 = std::stof(tmp, NULL);
        tmp = buf;
        tmp = tmp.substr(pos + 1);
        z2 = std::stof(tmp, NULL);

        std::cout << "tx: " << x2 << " ty: " << z2 << std::endl;
    }
    else
        std::cout << "Not Receiving" << std::endl;

Любая помощь будет потрясающей!

...