Socket in iOS

来源:互联网 发布:ubuntu花屏 编辑:程序博客网 时间:2024/05/24 01:51
  • TCP based Socket (also can use AsynSocket lib)
      NSInputStream *inputStream;
      NSOutputStream *outputStream;

   

- (void)connect

{

   CFReadStreamRef readStream;

   CFWriteStreamRef writeStream;

    

   CFStreamCreatePairWithSocketToHost(NULL, (__bridgeCFStringRef)(@"127.0.0.1"),80, &readStream, &writeStream);

   inputStream = (__bridgeNSInputStream *)readStream;

   outputStream = (__bridgeNSOutputStream *)writeStream;

    

    [inputStream setDelegate:self];

    [outputStream setDelegate:self];

    

    [inputStreamscheduleInRunLoop:[NSRunLoopcurrentRunLoop] forMode:NSDefaultRunLoopMode];

    [outputStreamscheduleInRunLoop:[NSRunLoopcurrentRunLoop] forMode:NSDefaultRunLoopMode];

    

    [inputStream open];

    [outputStream open];

}


- (void)sendMessage:(NSString *)message

{

NSData *data = [[NSDataalloc] initWithData:[messagedataUsingEncoding:NSASCIIStringEncoding]];

[outputStreamwrite:[data bytes]maxLength:[data length]];

}

  • UDP based socket (use AsyncUdpSocket lib)
    • Copy AsyncUdpSocket.h and AsyncUdpSocket.m to your project.
    • Conform to AsyncUdpSocketDelegate for example, 
      • @interface XXXViewController :UIViewController <AsyncUdpSocketDelegate>
    • - (void)initUdpSocket

      {

          asyncUdpSocket = [[AsyncUdpSocketalloc]initWithDelegate:self];

      }


      - (void)sendMessage:(NSString *)message

      {

          NSData *data = [[NSDataalloc] initWithData:[messagedataUsingEncoding:NSUTF8StringEncoding]];

          BOOL success = [asyncUdpSocketsendData:data toHost:@"127.0.0.1"port:8888 withTimeout:-1 tag:1];

          NSLog(@"send upd complete: %d", success);

      }