UDP 経由でデータを転送するために Winsock2 ソケットを使用しています。配列を sendTo() 関数に渡してデータを送信するのに問題があります。
将来の再利用のために 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;
データまたは値のポインターのアドレスを取得しているようです。「&」とポインターをいじってみましたが、ポインターが指している最初の数字以外を転送する正しい方法が見つかりませんでした。私は主に C# でコードを書いていますが、C++ に戻った今、私のポインター スキルはかなり錆びています。
渡された配列を正しく送信するには、どのように渡すか使用しますか?