0

iPhone をサーバーと (Java で) 通信させようとしています。クライアント(iPhone)とサーバー間の通信、接続を取得しました。

今、サーバーから iPhone に書き込んでいます。

ジャバコード:

 String message = "bye";

            byte[] msg = message.getBytes();    

            OutputStream bufferSalida = client.getOutputStream();  
            DataOutputStream datos = new DataOutputStream(bufferSalida);                
            datos.write(msg);

iPhoneコード:

- (void)stream:(NSStream *)theStream handleEvent:(NSStreamEvent)streamEvent
{
 switch (streamEvent) {
    case NSStreamEventHasBytesAvailable: {
        NSLog(@"can read: %@", theStream);
        uint8_t *buffer;
        NSUInteger length;
        [(NSInputStream *)theStream getBuffer:&buffer length:&length];
        NSData *data = [NSData dataWithBytes:buffer length:length];
        NSString *string = [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding];
        NSLog(@"bytes: %@", data);
        NSLog(@"string: %@", string);

        break;
    }

ログで、私は読むことができます:

2012-05-21 13:03:50.500 sockets[2412:f803] can read: <__NSCFInputStream: 0x6d83e20>
2012-05-21 13:03:50.501 sockets[2412:f803] bytes: <>
2012-05-21 13:03:50.502 sockets[2412:f803] string:

バイトと文字列が無効なのはなぜですか???

前もって感謝します。

4

1 に答える 1

1

私はあなたが実際に何も読んでいないと確信しています。の値を記録してみてくださいNSUInteger length。それが言うことを見てください。

于 2012-05-21T11:35:05.450 に答える