UDP를 통해 일부 데이터를 전송할 때 Winsock2 소켓을 사용하고 있습니다. 데이터를 보내기 위해 배열을 sendTo() 함수에 전달하는 데 어려움을 겪고 있습니다.UDP 패킷을 보내는 함수에 배열 전달
나는 미래의 재사용을 위해 mySocket 클래스를 작성했으며, 현재 작동하는 다음과 같은 메소드가 있습니다.
bool MySocket::sendData()
{
short int values[] = {1000,2000,3000,4000,5000};
int ret = sendto(sd,(const char*)values, sizeof(values) , 0, (sockaddr *)&sin, sizeof(sin));
if(ret == SOCKET_ERROR)
{
return false;
}
return true;
}
가 지금은 그래서 새로운 기능의 모습
short int values[] = {1000,2000,3000,4000,5000};
을 가진 대신 배열에 전달하려는 :
bool MySocket::sendData(short int data[])
{
short int * values = data;
int ret = sendto(sd,(const char*)&values, sizeof(data) , 0, (sockaddr *)&sin, sizeof(sin));
if(ret == SOCKET_ERROR)
{
return false;
}
return true;
}
함수가 호출 될 호출되면 :
short int data[] = {1000,2000,3000,4000,5000}; //Or some other pre-assembled list of short ints
if(socket->sendData(data))
cout << "Server: Packet Sent" << endl;
else
cout << "Server_Error: Packet failed to send" << endl;
나는 jus 데이터 또는 값에 대한 포인터의 주소를 가져 오는 중입니다. 나는 "&"과 포인터로 놀고 있었지만, 포인터가 가리키는 첫 번째 숫자 이외의 어떤 것도 전송하는 올바른 방법을 찾지 못했습니다. 나는 주로 C# 코드를 작성하고 C++로 다시 전환하면 포인터 기술이 녹슬어진다.
올바르게 전달하기 위해 전달 된 배열을 전달하거나 사용하려면 어떻게해야합니까?
'짧은 INT * 값 = data' 왜 이렇게 그냥 이런 일을합니까? 왜'data'를 직접 사용하지 않을까요? –
좋아, 내가 1000, 그리고 2000 포인터를 할당하는 대신 직접 데이터를 사용하여지고 있어요. – Brandon
이것은'sizeof (data)'가 포인터의 크기이고, short 크기의 두 배입니다. 이 문제를 해결하는 방법에 대한 내 대답과 자세한 설명을 참조하십시오. –