Java - Objective C Socket UTF8 问题

标签 java iphone sockets utf-8 nsstring

我正在编写一个小的客户端-服务器程序。 服务器采用 Java 语言,客户端采用 IOS 语言。 在服务器上我使用java.net.ServerSocket,在客户端上使用LXSocket。从客户端向服务器发送数据(整数、 double 、 float 、UTF8 字符串)效果很好,但是当我尝试将 UTF8 字符串发送回客户端时,它有点失败。我可以接收消息,但不能将其转换为 NSString。

Java发送代码:

public void sendMessage(java.net.Socket socket) throws IOException {
    DataOutputStream stream = new DataOutputStream(socket.getOutputStream());
    int i = swabInt(64);
    stream.writeInt(i);
    String message = "Message to send as UTF8.";
    int len = swabInt(message.length());
    stream.writeInt(len);
    stream.write(nachricht.getBytes("UTF8"));
}

IOS接收代码:

-(IBAction)createSocket {
LXSocket *socket = [[[LXSocket alloc] init] autorelease];
[socket connect:@"localhost" port:11111];

int i = [socket readInt];
int len = [socket readInt];
NSData *data = [socket readBytesWithLength:len];
NSString *str = [[NSString alloc]initWithData:data encoding:NSUTF8StringEncoding];

接收流可以工作,但是当我尝试初始化 NSString 时它崩溃了。 有什么想法吗?

编辑

传输工作正常,但我发现了一些奇怪的事情。我尝试了这段代码:

NSString *test = @"The Message";
    const char *c = [test UTF8String];`
NSString *string = [[NSString alloc] initWithUTF8String:c];
NSLog(@"Decoding: %s", string);

但是我的控制台说:

2011-03-17 22:51:27.555 Sockets[8641:207] Decoding: ¿Ø‚

那么有什么方法可以从这个用 UTF8 编码的 char 数组中获取 NSString 吗?

最佳答案

好吧我明白了... 简直愚蠢至极……

NSLog(@"%s", theString);

而不是

NSLog(@"%@", theString);

史诗般的失败。

关于Java - Objective C Socket UTF8 问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5309042/

相关文章:

java - 如何更改 JavaMail 端口

iphone - 具有弹跳效果的 UIView 帧原点 x 动画

iphone - NS未知异常: this class is not key value coding-compliant for the key piewTextField

ios - 时区问题 "ZE8",如何将NSDate转换为NSString

c - 防止 getpeername() 返回 127.0.0.1

ios - iPhone:启用蜂窝 radio 的 IPv4 Wi-Fi 访问失败

Java:使用 DataOutputStream 写入套接字速度变慢,然后停止

java - 出现错误 org.springframework.beans.BeanInstantiationException :

java - 向数组添加数据时如何删除括号

java - 可用的 JSF MVC 组件