Java - Objective C Socket UTF8问题

时间:2011-03-15 08:15:22

标签: java iphone sockets utf-8 nsstring

我正在编写一个小型客户端 - 服务器程序。 服务器使用Java和Client IOS。 在服务器上我使用java.net.ServerSocket并在客户端上使用LXSocket。从客户端到服务器发送数据(整数,双,浮点,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?

1 个答案:

答案 0 :(得分:2)

好的,我想通了...... 平淡的愚蠢......

NSLog(@"%s", theString);

而不是

NSLog(@"%@", theString);

史诗失败。