我正在编写一个小的客户端-服务器程序。 服务器采用 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/