C++ UDP接收和發送


class UDP {
public:
    UDP() {
        RecvAddrSize = sizeof(RecvAddr);
        int nResult = WSAStartup(MAKEWORD(2, 2), &wsaData);
        if (nResult != NO_ERROR) {
            std::cout << WSAGetLastError();
            return;
        }
        RecvSocket = socket(AF_INET, SOCK_DGRAM, IPPROTO_UDP);
        //設置服務器地址
        RecvAddr.sin_family = AF_INET;
        RecvAddr.sin_port = htons(Port);
        RecvAddr.sin_addr.s_addr = inet_addr("192.168.1.111");
        int ret = bind(RecvSocket, (sockaddr *)&RecvAddr, sizeof(RecvAddr));
        if (ret < 0) {
            perror("bind");
            return;
        }
    }
    void sendDataToPython() {char temp[2000];
        sprintf(temp, "insert into Flight_data.AirData({:}, cdata) values({:}, '{:}')", m_str, s_str, date_time);
        int flag = sendto(RecvSocket, temp, sizeof(temp), 0, (sockaddr*)&RecvAddr, sizeof(RecvAddr));
        std::cout << flag;
        }
    }
    void recvDataToLocal() {
            memset(RecvBuf, '\0', sizeof(RecvBuf));
            printf("recv a datagram to the receiver...\n");
            int nResult = recvfrom(RecvSocket, RecvBuf, BufLen, 0, (SOCKADDR *)&RecvAddr, &RecvAddrSize);
            //發送完成,關閉Socket
            printf("%s\n", RecvBuf);
    }
    ~UDP() {
        closesocket(RecvSocket);
        WSACleanup();
    }
private:
    WSADATA wsaData;//初始化
    SOCKET RecvSocket;
    sockaddr_in RecvAddr, sendAddr;//服務器地址
    char RecvBuf[10240] = { 0 };//發送數據的緩沖區
    int Port = 4000;//服務器監聽地址
    int BufLen = 10240;//緩沖區大小
    int RecvAddrSize = 0; //初始化SocketAddr的大小
};

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM