网络编程 socket简单编程总结
2013-02-25 16:41
344 查看
首先和服务器建立连接:
- (void) doConnect {
CFSocketContext CTX = {0, self, NULL, NULL, NULL};
_socket = CFSocketCreate(kCFAllocatorDefault, PF_INET, SOCK_STREAM, IPPROTO_TCP,kCFSocketConnectCallBack, TCPServerConnectCallBack, &CTX);
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(_socket, address, -1);
CFRunLoopRef cfrl = CFRunLoopGetCurrent();
CFRunLoopSourceRef source = CFSocketCreateRunLoopSource(kCFAllocatorDefault, _socket, 0);
CFRunLoopAddSource(cfrl, source, kCFRunLoopCommonModes);
CFRelease(source);
}
向服务器发送消息: 《这里需要注意的是函数体中第一句话,拼了一个”\n“,来表示当前消息的结束,当然也可以用别的符号来规定比如”\r\n“或者”/0“等,亦或者不规定》
- (void) sendMessage {
NSString *stringToSend = [chatController.textField.text stringByAppendingString:@"\n"];
const char *data = [stringToSend UTF8String];
send(CFSocketGetNative(_socket), data, strlen(data), 0);
}
连接成功以及发送成功接受的回调函数:
static void TCPServerConnectCallBack(CFSocketRef socket, CFSocketCallBackType type, CFDataRefaddress, const void *data, void *info) {
if (data != NULL) {
UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"" message:@"连接失败" delegate:nilcancelButtonTitle:@"关闭" otherButtonTitles:nil];
[alert show];
[alert release];
return;
}
TCPClientDemoAppDelegate *delegate = (TCPClientDemoAppDelegate *)info;
[delegate performSelectorInBackground:@selector(readStream) withObject:nil];
}
以上是简单的实用ios中的类库来建立简单的socket并实现消息的发送于接收。
如需实用更多功能,可以实用第三方AsyncSocket这个类库,详情谷歌:AsyncSocket。
- (void) doConnect {
CFSocketContext CTX = {0, self, NULL, NULL, NULL};
_socket = CFSocketCreate(kCFAllocatorDefault, PF_INET, SOCK_STREAM, IPPROTO_TCP,kCFSocketConnectCallBack, TCPServerConnectCallBack, &CTX);
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(_socket, address, -1);
CFRunLoopRef cfrl = CFRunLoopGetCurrent();
CFRunLoopSourceRef source = CFSocketCreateRunLoopSource(kCFAllocatorDefault, _socket, 0);
CFRunLoopAddSource(cfrl, source, kCFRunLoopCommonModes);
CFRelease(source);
}
向服务器发送消息: 《这里需要注意的是函数体中第一句话,拼了一个”\n“,来表示当前消息的结束,当然也可以用别的符号来规定比如”\r\n“或者”/0“等,亦或者不规定》
- (void) sendMessage {
NSString *stringToSend = [chatController.textField.text stringByAppendingString:@"\n"];
const char *data = [stringToSend UTF8String];
send(CFSocketGetNative(_socket), data, strlen(data), 0);
}
连接成功以及发送成功接受的回调函数:
static void TCPServerConnectCallBack(CFSocketRef socket, CFSocketCallBackType type, CFDataRefaddress, const void *data, void *info) {
if (data != NULL) {
UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"" message:@"连接失败" delegate:nilcancelButtonTitle:@"关闭" otherButtonTitles:nil];
[alert show];
[alert release];
return;
}
TCPClientDemoAppDelegate *delegate = (TCPClientDemoAppDelegate *)info;
[delegate performSelectorInBackground:@selector(readStream) withObject:nil];
}
以上是简单的实用ios中的类库来建立简单的socket并实现消息的发送于接收。
如需实用更多功能,可以实用第三方AsyncSocket这个类库,详情谷歌:AsyncSocket。
相关文章推荐
- 关于socket网络编程,各种报错若干总结
- iOS 开发 之网络编程简单总结转载
- Socket网络编程--简单Web服务器(4)
- [Java] 【源码】新手初探java网络编程——socket接口实现简单的客户机/服务器程序
- C#网络编程socket使用总结
- 网络编程C#篇(二):Socket无连接简单实例 推荐
- java网络编程一:Socket用法,简单模拟一对一聊天
- java网络编程一:Socket用法,简单模拟一对一聊天
- java网络编程——Socket和ServerSocket,套接字编程——简单聊天室
- 网络编程与多线程的应用--基于socket udp编写一个简单聊天程序
- linux网络编程之用socket实现简单客户端和服务端的通信(基于UDP)
- java网络编程——socket简单模拟http服务器
- Android网络编程之Socket通信实现简单聊天室
- 【tcp网络编程】用Socket建立一个简单的文本转换服务器
- 【网络编程】Socket概念及简单聊天…
- Socket网络编程--简单Web服务器(5)
- 项目总结——深入浅出socket网络编程
- linux下简单socket网络编程
- Socket网络编程--简单Web服务器(1)
- 【tcp-ip学习总结】socket编程基础/网络编程基础