java - 从 C 客户端向 Java 服务器发送字符串时出错

标签 java c sockets datainputstream

我将一个整数从 C 客户端发送到 java 服务器,它工作得很好。但是当我尝试用字符串做同样的事情时,我得到了错误 这是发送字符串的客户端代码

char clientString[30];

    printf("String to send : \n");

        if( send( to_server_socket, &clientString, sizeof( clientString ), 0 ) != sizeof( clientString ) )
        {
            printf( "socket write failed");
            exit( -1 );
        }

以及读取它的java代码

DataInputStream din = new DataInputStream(socket.getInputStream());
          String clientString=din.readUTF();
           System.out.println(clientString);

错误

java.io.EOFException at java.io.DataInputStream.readFully(DataInputStream.java:180) at java.io.DataInputStream.readUTF(DataInputStream.java:592) at java.io.DataInputStream.readUTF(DataInputStream.java:547) at ServiceRequest.run(ServiceRequest.java:43) at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:439) at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:303) at java.util.concurrent.FutureTask.run(FutureTask.java:138) at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:895) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:918) at java.lang.Thread.run(Thread.java:680)

编辑:我尝试使用din.readLine(),我不再有错误,但是如果我在客户端上输入ffffffff12,我会在服务器中得到ffffffff12`?7E^Ê?h

最佳答案

无论输入的实际长度有多长,您都可以发送 clientString 数组中的所有数据。正确终止字符串并仅发送例如改为 strlen(clientString) 字节。

关于java - 从 C 客户端向 Java 服务器发送字符串时出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16377053/

相关文章:

c - 为什么作为函数参数给出的字符串地址在溢出 ret 地址后发生变化?

c - 将服务器的输出重定向到客户端套接字

sockets - 模拟本地网络的低速连接

java - java中的正则表达式: find all _overlapping_ variants (ab)|(bc)|(de)|(f) in abcdef

c - 在 C 中打印字符数组 - 仅最后一个字母?

java - JavaFX Webview 可以发送通知吗?

iphone - 如何使用 RegexKitLite 删除任意两个单词之间的空格/空白?

.net - 阻塞 TCP 套接字写入然后立即关闭 - 这是一个问题吗?

java - 为什么Java中没有 "List.reverse()"方法?

java - 如何用复合模式做一个类?