Objective C TCP 通讯实例
来源:互联网 发布:jstor数据库中文版 编辑:程序博客网 时间:2024/06/05 17:37
TCP通讯实例
Communicator.h
#import <Foundation/Foundation.h> @interface Communicator : NSObject <NSStreamDelegate> {@publicNSString *host;int port;} - (void)setup;- (void)open;- (void)close;- (void)stream:(NSStream *)stream handleEvent:(NSStreamEvent)event;- (void)readIn:(NSString *)s;- (void)writeOut:(NSString *)s; @end
Communicator.m
#import "Communicator.h" CFReadStreamRef readStream;CFWriteStreamRef writeStream; NSInputStream *inputStream;NSOutputStream *outputStream; @implementation Communicator - (void)setup {NSURL *url = [NSURL URLWithString:host];NSLog(@"Setting up connection to %@ : %i", [url absoluteString], port);CFStreamCreatePairWithSocketToHost(kCFAllocatorDefault, (CFStringRef)[url host], port, &readStream, &writeStream);if(!CFWriteStreamOpen(writeStream)) {NSLog(@"Error, writeStream not open");return;}[self open]; NSLog(@"Status of outputStream: %i", [outputStream streamStatus]);return;} - (void)open {NSLog(@"Opening streams.");inputStream = (NSInputStream *)readStream;outputStream = (NSOutputStream *)writeStream;[inputStream retain];[outputStream retain];[inputStream setDelegate:self];[outputStream setDelegate:self];[inputStream scheduleInRunLoop:[NSRunLoop currentRunLoop] forMode:NSDefaultRunLoopMode];[outputStream scheduleInRunLoop:[NSRunLoop currentRunLoop] forMode:NSDefaultRunLoopMode];[inputStream open];[outputStream open];} - (void)close {NSLog(@"Closing streams.");[inputStream close];[outputStream close];[inputStream removeFromRunLoop:[NSRunLoop currentRunLoop] forMode:NSDefaultRunLoopMode];[outputStream removeFromRunLoop:[NSRunLoop currentRunLoop] forMode:NSDefaultRunLoopMode];[inputStream setDelegate:nil];[outputStream setDelegate:nil];[inputStream release];[outputStream release];inputStream = nil;outputStream = nil;} - (void)stream:(NSStream *)stream handleEvent:(NSStreamEvent)event {NSLog(@"Stream triggered.");switch(event) {case NSStreamEventHasSpaceAvailable: {if(stream == outputStream) {NSLog(@"outputStream is ready."); }break;}case NSStreamEventHasBytesAvailable: {if(stream == inputStream) {NSLog(@"inputStream is ready."); uint8_t buf[1024];unsigned int len = 0;len = [inputStream read:buf maxLength:1024];if(len > 0) {NSMutableData* data=[[NSMutableData alloc] initWithLength:0];[data appendBytes: (const void *)buf length:len];NSString *s = [[NSString alloc] initWithData:data encoding:NSASCIIStringEncoding];[self readIn:s];[data release];}} break;}default: {NSLog(@"Stream is sending an Event: %i", event);break;}}} - (void)readIn:(NSString *)s {NSLog(@"Reading in the following:");NSLog(@"%@", s);} - (void)writeOut:(NSString *)s {uint8_t *buf = (uint8_t *)[s UTF8String];[outputStream write:buf maxLength:strlen((char *)buf)];NSLog(@"Writing out the following:");NSLog(@"%@", s);} @end
StreamExample.m
#import <Foundation/Foundation.h> #import "Communicator.h" int main (int argc, const char * argv[]) {NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init]; Communicator *c = [[Communicator alloc] init];c->host = @"http://127.0.0.1";c->port = 6789;[c setup];[c open];[pool drain];return 0;}
- Objective C TCP 通讯实例
- socket通讯实例 (objective-c)
- Tcp异步通讯实例
- Tcp Socket异步通讯实例
- TCP通讯实例两则
- 【C#】 Socket的TCP通讯
- [Linux C]TCP通讯例程
- Objective-C----实例变量
- 套接字通讯实例(TCP)
- 套接字通讯实例(TCP)
- 套接字通讯实例(TCP)
- 基于TCP的简单通讯实例
- Objective-C GCD实例讲解
- C语言 UDP双向通讯仿TCP通讯模式
- Objective-C面向对象-Objective-C 对象,实例和方法
- TCP通讯
- TCP通讯
- TCP通讯
- Spring MVC + freemarker实现半自动静态化
- java.util.Locale简介
- Spring框架集成FreeMarker
- Spring AOP基础-CGLib动态代理
- 让插件帮你优化代码
- Objective C TCP 通讯实例
- C++中的cout
- java 中遍历Map的几种方法
- POJ动态规划分类
- Objective-C的方法替换
- useful opensource components & opensources apps
- Java中的10颗语法糖
- Oracle 11.2.0.3 ORA-12012 ORA-29280 ORA-06512 错误 解决方法
- git二分法查找命令的使用