Char to Char [1024]错误 - UDP Internet协议

时间:2014-02-15 18:36:46

标签: c++ udp

代码:

int SendDG(char TOSEND, int IRES, SOCKET SSOCK, sockaddr_in RADD)
    {
        char Data[1024]=TOSEND;
        int BufLen = 1024;
        int iResult = IRES;
        SOCKET SendSocket = SSOCK;
        sockaddr_in RecvAddr = RADD;
           //---------------------------------------------
        // Send a datagram to the receiver
        wprintf(L"Sending info to the receiver...\n");
        iResult = sendto(SendSocket,
                         Data, BufLen, 0, (SOCKADDR *) & RecvAddr, sizeof (RecvAddr));
        if (iResult == SOCKET_ERROR) {
            wprintf(L"sendto failed with error: %d\n", WSAGetLastError());
            closesocket(SendSocket);
            WSACleanup();
            return 1;
        }
    }

错误:

  

智能感知:使用' {...}'进行初始化预计总计   对象错误C2440:'初始化' :无法转换为' char'至   ' char [1024]'

3 个答案:

答案 0 :(得分:1)

一个问题本来不错。

但我猜:在你写的第三行:

char Data[1024]=TOSEND;

其中Datachar - 数组,TOSEND是普通char。因此,您无法将纯char分配给char数组。可能是你想要像

这样的东西
char Data[1024];
Data[0] = TOSEND;

但我不这么认为。我假设TOSEND应该指向应该发送的数据的某种指针。

答案 1 :(得分:0)

如果您只想发送TOSEND的内容(因为您的代码中似乎是这种情况),那么:

  1. 摆脱这个:

    char Data[1024]=TOSEND;

    int BufLen = 1024;

  2. 更改此内容:

    iResult = sendto(SendSocket, Data, BufLen, ...);

    iResult = sendto(SendSocket, &TOSEND, sizeof(TOSEND), ...);

答案 2 :(得分:0)

使用strcpy(Data,TOSEND);代替Data[1024]=TOSEND 希望它能解决问题。