C を使用して Java クライアントから C サーバーに文字列を送信しようとしています。まず、文字列の長さを送信します。次に、C でメモリを手動で割り当て、最後に文字列を 1 文字ずつ送信します。
正しい文字列を取得する場合もあれば、文字列全体 + その他の不明な文字を取得する場合もあります (取得するよりも多くを割り当てているように)。
Javaコードは次のとおりです。
protected void send(String data){
short dataLength=(short)data.length();
try {
out.write(dataLength);
for (int i=0; i<data.getBytes().length ;i++)
{
out.write(data.getBytes()[i]);
}
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
そして、ここにCコードがあります:
void read4(int sock, int *data)
{
char dataRecv;
char* memoireAllouee=NULL;
int stringLength;
int i=0;
recv(sock, (char*)&dataRecv, sizeof(dataRecv), 0) ;
*data = dataRecv;
stringLength=dataRecv;
memoireAllouee=malloc(sizeof(char)*stringLength);
if (memoireAllouee==NULL)
{
exit(0);
}
for (i=0;i<stringLength;i++)
{
recv(sock, (char*)&dataRecv, sizeof(dataRecv), 0) ;
*data = dataRecv;
memoireAllouee[i]=dataRecv;
}
printf("\n\n%d\n\n\n",stringLength);
printf("\n%s\n",memoireAllouee);
}
この方法が最適ではないと思われる場合は、より高速な方法で私を助けてもらえますか?