我正在尝试使用 C 将一些字符串从 Java 客户端发送到 C 服务器。首先我发送字符串的长度。然后,我在 C 中手动分配内存,最后我一个字符一个字符地发送字符串。
有时我得到正确的字符串,有时我得到整个字符串 + 额外的其他未知字符的问题(就像我分配的比我得到的多)。
这是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);
}
如果您还认为这种方法不是最佳方法,您能帮我用一个更快的方法吗?