C++ 字符对字符[1024]错误-UDP Internet协议
代码:C++ 字符对字符[1024]错误-UDP Internet协议,c++,udp,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; //--
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;
}
}
错误:
IntelliSense:聚合应使用“{…}”进行初始化
对象错误C2440:“正在初始化”:无法从“字符”转换为
'字符[1024]'
问个问题就好了 但我猜:在第三行你写道:
char Data[1024]=TOSEND;
其中,Data
是一个char
-数组,TOSEND
是一个普通的char
。因此不能将普通的char
分配给char
数组。可能是你想要像这样的东西
char Data[1024];
Data[0] = TOSEND;
但我不这么认为。我假设
TOSEND
应该是指向应该发送的数据的指针。如果您只想发送TOSEND
的内容(在您的代码中似乎是这样),那么:
char数据[1024]=TOSEND代码>
int BufLen=1024代码>
iResult=sendto(SendSocket,Data,BufLen,…)代码>
到iResult=sendto(SendSocket,&TOSEND,sizeof(TOSEND),…)代码>
strcpy(数据,发送)代码>而不是数据[1024]=TOSEND
希望它能解决问题。是的,很抱歉你是对的。但现在的问题是,如果TOSEND
不是指向以null结尾的字符串的指针,那么将其复制到数据[1024]有什么用呢?我的意思是它可能只复制到数据。请纠正我,因为我有点困惑。塔克斯