我正在编写一个小型客户端 - 服务器程序。 服务器使用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?
答案 0 :(得分:2)
好的,我想通了...... 平淡的愚蠢......
NSLog(@"%s", theString);
而不是
NSLog(@"%@", theString);
史诗失败。