Я программирую небольшую клиент-серверную программу.
Сервер находится на Java и клиент 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, происходит сбой.
Есть идеи?
EDIT
Коробка передач работает нормально, но я обнаружил что-то странное. Я опробовал этот код:
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: ¿Ø‚
Так есть ли способ получить строку NSString из этого массива символов, закодированного с помощью UTF8 ??