我将一个整数从 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/