如何在Java中处理C字符数组

如何在Java中处理C字符数组,java,c,client-server,httpclient,Java,C,Client Server,Httpclient,我在实现C客户机/Java服务器时遇到问题。我对服务器端的put方法有问题。我的问题与()相同,但给定的解决方案在我的情况下不起作用 我的问题是我收到了一个损坏的文件 当我看到原始文件和接收到的文件的原始数据时,我注意到Java无法识别某些字符。例如,在原始文件中,接收到的文件中有89表示的字符,如果以UTF-8写入字节数组,则有“ef bf bd”,如果以US-ASCII编码写入,则有“3f”。以下是我计划的重要部分: InputStream entreeSocket = socketServ

我在实现C客户机/Java服务器时遇到问题。我对服务器端的put方法有问题。我的问题与()相同,但给定的解决方案在我的情况下不起作用

我的问题是我收到了一个损坏的文件

当我看到原始文件和接收到的文件的原始数据时,我注意到Java无法识别某些字符。例如,在原始文件中,接收到的文件中有89表示的字符,如果以UTF-8写入字节数组,则有“ef bf bd”,如果以US-ASCII编码写入,则有“3f”。以下是我计划的重要部分:

InputStream entreeSocket = socketService.getInputStream();
FileOutputStream out = new FileOutputStream(filename);
while(length > 0){
int nb;
if(length > buffer.length)
        nb = socket.read(buffer,0,buffer.length);
else
    nb = socket.read(buffer,0,length);
out.write(buffer,0,nb);
if(nb == -1) break;
length -=nb;            
}

out.close();
socket.close();
客户端:

char buffer[1024];
while(length > 0 ){ 
   nb = read(fd,buffer,1024);
   write(sockfd,buffer,nbChar);               
   length = length - nb;;
 } 

任何帮助都将不胜感激。提前谢谢

因为它是一个客户机服务器,并且您使用套接字编程,所以最好使用hton()和ntoh()函数来确保。这些是C/C++中使用的函数,我相信java中也会有类似的函数。我认为它将解决您的问题,或者至少是一个更好的实现。我给你一个链接:


我发现下面对函数的描述非常有用。

我已经尝试过了,但不起作用。谢谢,这是JNI的工作吗?不,这与JNI无关