Java服务器到iOS应用程序流:不正确



我有一个Java服务器,想向iOS应用程序发送String消息。

发送理论上是可行的,但我的应用程序中总是收到"。我尝试了不同的编码方式,如ASCII、Unicode、UTF-16。

我的Java发送方法如下:

public void sendName(String str) {
    try {
        System.out.println("Send: "+str);
        ObjectOutputStream oos = new ObjectOutputStream(s.getOutputStream());
        oos.writeObject(str.getBytes(StandardCharsets.US_ASCII));
    } catch (IOException ex) {
    }
}

我的目标C接收方法是这样的:

- (void)readFromStream{
    uint8_t buffer[1024];
    int len;
    NSMutableString *total = [[NSMutableString alloc] init];
    while ([inputStream hasBytesAvailable]) {
        len = [inputStream read:buffer maxLength:sizeof(buffer)];
        if (len > 0) {
            [total appendString: [[NSString alloc] initWithBytes:buffer length:len encoding:NSASCIIStringEncoding]];
            NSLog(@"%@",total);
        }
    }
}

有人知道怎么了吗?谢谢:)

您应该尝试使用PrintStreamBufferedOutputStream而不是ObjectOutputStream。因为ObjectOutputStream听起来像是在发送对象String,而不仅仅是字符串。

public void sendName(String str) 
{
    PrintStream ps = null;
    try 
    {
        System.out.println("Send: "+str);
        ps = new PrintStream(s.getOutputStream());
        ps.println(str);
        ps.flush();
    } catch (IOException ex) 
    {
    }
    finally
    {
       if(ps != null)
         ps.close();
    }
}

  public void sendName(String str) 
  {
      BufferedOutputStream bos = null;
      try
      {
          System.out.println("Send: "+str);
          bos = new BufferedOutputStream(s.getOutputStream());
          bos.write(str.getBytes(StandardCharsets.US_ASCII));
          bos.flush();
      } catch (IOException ex) 
      {
      }
      finally
      {
          if(bos!= null)
            bos.close();
      }
}

相关内容

  • 没有找到相关文章

最新更新