У меня в коде два вызова на стороне сервера для двух функций sendMatrixPos а также sendMatrixTrack отправить две матрицы последовательно. и я отправил матрицы еврей фрам клиенту
сервер
void MyTestPlugin::sendMSGP()
{
if(!connected)
return;
if ( (numbytes = send(client_skt, buf, 16*sizeof(float) ,0)) == -1){
std::cerr<<"server, normal send error"<<std::endl;
exit(1);
}
}
void MyTestPlugin::sendMSGT()
{
if(!connected)
return;
if ( (numbytes = send(client_skt, trackBuf, 16*sizeof(float) ,0)) == -1){
std::cerr<<"server, normal send error"<<std::endl;
exit(1);
}
}
void MyTestPlugin::sendMatrixPos()
{
if(!connected)
return;
Matrixd transNode = PluginHelper::getObjectMatrix();
for (int i=0; i<4; ++i)
for (int j=0; j<4; ++j)
matrixP[i*4+j] = transNode(i,j);
for(int i=0; i<16; i++)
{
cerr <<"matrixP:" << i << " " << matrixP[i] << endl;
}
memcpy(buf,matrixP,sizeof(float)*16);
sendMSGP();
}
void MyTestPlugin::sendMatrixTrack()
{
if(!connected)
return;
Matrixd trackNode = PluginHelper::getHeadMat(1);
for (int i=0; i<4; ++i)
for (int j=0; j<4; ++j)
matrixT[i*4+j] = trackNode(i,j);
for(int i=0; i<16; i++)
{
cerr <<"matrixT:" << i << " " << matrixT[i] << endl;
}
memcpy(trackBuf,matrixT,sizeof(float)*16);
sendMSGT();
}
void MyTestPlugin::preFrame()
{
sendMatrixPos();
sendMatrixTrack();
}
С другой стороны, у меня есть два вызова клиента для функции, чтобы получать две матрицы последовательно от сервера каждый кадр.
клиент
void osgMain::draw()
{
recvMSG();
...
recvMSG();
}void osgMain::recvMSG()
{
numbytes = recv(client_skt, buf, bufferSize,0);
if ( numbytes == -1 ){
//__android_log_print(ANDROID_LOG_ERROR,"jni client","recv error");
//exit(1);
}
else
{
memcpy (matrix, buf, numbytes);
}
}
Я использовал протокол TCP / IP. Мне нужно отправить две матрицы и получить их одновременно (не последовательно). Как я могу сделать этот шаг? или как я могу отправить две матрицы одновременно?
BUFFERSIZE 1024 на стороне клиента, а также 1024 на стороне сервера …
Ваша передача будет ограничена «размером сетевого канала» — если у вас нет сетевой карты 40 Гбит / с, маловероятно, что вы выиграете от попыток отправки данных параллельно — вы просто усложните свой код — пока ваш код написан для асинхронной отправки / получения, это то, что вам нужно.
Других решений пока нет …