- (void) doConnect {
CFSocketContext CTX = {0, self, NULL, NULL, NULL};
_socket = CFSocketCreate(kCFAllocatorDefault, PF_INET, SOCK_STREAM, IPPROTO_TCP,kCFSocketConnectCallBack
if (NULL == _socket) {
UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"" message:@"创建套接字失败" delegate:nilcancelButtonTitle:@"关闭" otherButtonTitles:nil];
[alert show];
[alert release];
}
struct sockaddr_in addr4;
memset(&addr4, 0, sizeof(addr4));
addr4.sin_len = sizeof(addr4);
addr4.sin_family = AF_INET;
addr4.sin_port = htons(8888);//端口
addr4.sin_addr.s_addr = inet_addr([@"192.168.1.121" UTF8String]);//IP地址
CFDataRef address = CFDataCreate(kCFAllocatorDefault, (UInt8 *)&addr4, sizeof(addr4));
CFSocketConnectToAddress
CFRunLoopRef cfrl = CFRunLoopGetCurrent();
CFRunLoopSourceRef source = CFSocketCreateRunLoopSou
CFRunLoopAddSource(cfrl, source, kCFRunLoopCommonModes);
CFRelease(source);
}
向服务器发送消息:
- (void) sendMessage {
NSString *stringToSend = [chatController.textField.text stringByAppendingString:@"\n"];
const char *data = [stringToSend UTF8String];
send(CFSocketGetNative(_socket), data, strlen(data), 0);
}
连接成功以及发送成功接受的回调函数:
static void TCPServerConnectCallBack
if (data != NULL) {
UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"" message:@"连接失败" delegate:nilcancelButtonTitle:@"关闭" otherButtonTitles:nil];
[alert show];
[alert release];
return;
}
TCPClientDemoAppDelegate
[delegate performSelectorInBackgro
}
以上是简单的实用ios中的类库来建立简单的socket并实现消息的发送于接收。
如需实用更多功能,可以实用第三方AsyncSocket这个类库,详情谷歌:AsyncSocket。