winsockで送受信されるデータの効率的な扱い方について
Winsock2.hを使って通信プログラムを作っています。
座標などのパラメータを短いスパンで送受信して処理をするものなのですが、
send()で送れるデータ型がchar*型ということなのでパラメータをwsprintf()を使って
SOCKET s;
int x=100;
int y=100;
int z=100;
char buf[16];
wsprintf(buf,"#%04d#%04d#%04d",x,y,z);
send(s,buf,strlen(buf),0);
のようにして送信して、受信されたデータはstrtok()で区切りながらそれぞれ格納しています。
SOCKAT s;
int x,y,z;
int nResult;
char buf[16];
char *tp;
nResult = recv(s,buf,sizeof(buf),0);
tp = strtok(buf,"#");
x=atoi(tp);
tp = strtok(buf,"#");
y=atoi(tp);
tp = strtok(buf,"#");
z=atoi(tp);
という感じなのですが、パラメータが増えていくにつれなんというか冗長というか、
もうちょっと賢いやり方があるような気がしていろいろ調べてはみたものの…
あまりデータの扱い方に関しての解説が見つからなかったので質問させていただきました。
ということで、他に複数の変数を纏めて送受信して処理する手法(できれば高速に)をご存知でしたらご教授お願いします。