【问题标题】:How to handle C char array in Java如何在 Java 中处理 C 字符数组
【发布时间】:2013-11-28 21:14:06
【问题描述】:

我在实现 C 客户端/Java 服务器时遇到问题。我在服务器端的 put 方法有问题。我的问题与 (Handling C char arrays with Java char arrays) 相同,但给定的解决方案不适用于我的情况。

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

当我看到原始文件的原始文件和收到的文件时,我注意到 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;;
 } 

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

【问题讨论】:

标签: java c client-server httpclient


【解决方案1】:

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

http://www.beej.us/guide/bgnet/output/html/multipage/htonsman.html

我发现功能下面的描述非常有用。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2010-11-14
    • 1970-01-01
    • 1970-01-01
    • 2022-01-15
    • 1970-01-01
    • 2013-07-18
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多