2014-02-15 194 views
0

代码:字符为Char [1024]错误 - 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: '初始化':不能从'字符'转换为 '字符[1024]'

回答

0

如果你只是想送TOSEND内容(因为它似乎是在你的代码的情况下),则:

  1. 摆脱这样的:

    char Data[1024]=TOSEND;

    int BufLen = 1024;

  2. 更改为:

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

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

1

一个问题本来就不错。

但我想:在第三行你写:

char Data[1024]=TOSEND; 

其中Datachar -array和TOSEND是一个普通的char。因此,您无法将简单的char指定给char阵列。可能是你想要的东西像

char Data[1024]; 
Data[0] = TOSEND; 

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

0

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

+0

不会工作! 'TOSEND'不是一个指向空终止字符串的指针。 –

+0

是的,抱歉,你是正确的。但是现在问题出现了,如果'TOSEND'不是一个指向空终止字符串的指针,那么将它拷贝到Data [1024]的用法是什么?我的意思是它可能被复制到只有数据。请纠正我,因为我有点困惑。感谢名单 –