【问题标题】:readUTF hangs at server sidereadUTF 在服务器端挂起
【发布时间】:2013-11-07 01:31:48
【问题描述】:

我正在实现客户端/服务器文件发送和接收。

实现:C语言客户端和Java服务器。

正在发送的部分 C 代码

long count;
FILE *file;
char *file_data;

file=fopen("test.txt","rb");
fseek (file , 0 , SEEK_END);
count = ftell (file);
rewind (file);

file_data=(char*)malloc(sizeof(char)*count);
fread(file_data,1,count+1,file);
fclose(file);

if ((numbytes = send(sockfd, file_data, strlen(file_data)+1 , 0)) == -1) 
{
 perror("client: send");
 exit(1);
}

部分Java代码接收

public String receiveFile() 
{
   String fileName="";
   try 
   {
    int bytesRead;
    InputStream in = clientSocket.getInputStream();
    DataInputStream clientData = new DataInputStream(in);
    fileName=clientData.readUTF();
   }
} 

使用 readUTF() 函数后,服务器挂起或处于无限循环,不再继续。我用 readLine() 尝试过 BufferedReader。有一个错误提示“没有为 BufferedReader(InputStream) 和 readLine() 找到合适的构造函数给出警告。 除了 BufferedReader 还有其他选择吗?

【问题讨论】:

    标签: java client bufferedreader utf datainputstream


    【解决方案1】:

    readUTF() 读取writeUTF() 写入的格式。您没有发送它,因此服务器无法读取它。使用read(byte[]),readFully(),new BufferedReader(newInputStreamReader(in));

    如果您使用readLine(),则需要发送换行符。在任何一种情况下,您都不需要发送尾随的 null。

    【讨论】:

      猜你喜欢
      • 2014-04-26
      • 1970-01-01
      • 2020-11-04
      • 1970-01-01
      • 2018-05-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多