使用ios自带的socket
2015-05-07 16:49
232 查看
iOS自带一个小的cfsocket库,可以解决简单的socket连接需求
-(void)Connect
{
//////////////////////创建套接字//////////////
CFSocketContext CTX = {0,NULL,NULL,NULL,NULL};
_socket =
CFSocketCreate(
kCFAllocatorDefault,
PF_INET,
SOCK_STREAM,
IPPROTO_TCP,
kCFSocketConnectCallBack,
// 类型,表示连接时调用
ServerConnectCallBack,//
调用的函数
NULL);
NSString *serverAddr =
@"192.168.1.33";
struct sockaddr_in addr;
memset(&addr , 0,sizeof(addr));
addr.sin_len =
sizeof(addr);
addr.sin_family =
AF_INET;
addr.sin_port =
htons(1978);
addr.sin_addr.s_addr =
inet_addr([serverAddr
UTF8String]);
CFDataRef address =
CFDataCreate(
kCFAllocatorDefault,
(UInt8*)&addr,
sizeof(addr));
CFSocketConnectToAddress(_socket,address,-1);
CFRunLoopRef cfrl =
CFRunLoopGetCurrent(); //
获取当前运行循环
CFRunLoopSourceRef source =
CFSocketCreateRunLoopSource(kCFAllocatorDefault,_socket,0);//定义循环对象
CFRunLoopAddSource(cfrl,source,kCFRunLoopCommonModes);
//将循环对象加入当前循环中
CFRelease(source);
}
static
void ServerConnectCallBack(
CFSocketRef socket,
CFSocketCallBackType type,
CFDataRef address,
const void *data,
void * info)
{
if(data != NULL)
{
NSLog(@"连接失败");//服务器那边已经提过,连接事件时该指针用于存放报错
}
else
{
NSLog(@"connect success");
}
}
-(void)ReadStream
{
char buffer[255];
while(recv(CFSocketGetNative(_socket),buffer,sizeof(buffer),0))
{
printf(buffer);
}
}- (void)viewDidLoad
{
[super
viewDidLoad];
[self
Connect];
// Do any additional setup after loading the view, typically from a nib.
}
-(void)Connect
{
//////////////////////创建套接字//////////////
CFSocketContext CTX = {0,NULL,NULL,NULL,NULL};
_socket =
CFSocketCreate(
kCFAllocatorDefault,
PF_INET,
SOCK_STREAM,
IPPROTO_TCP,
kCFSocketConnectCallBack,
// 类型,表示连接时调用
ServerConnectCallBack,//
调用的函数
NULL);
NSString *serverAddr =
@"192.168.1.33";
struct sockaddr_in addr;
memset(&addr , 0,sizeof(addr));
addr.sin_len =
sizeof(addr);
addr.sin_family =
AF_INET;
addr.sin_port =
htons(1978);
addr.sin_addr.s_addr =
inet_addr([serverAddr
UTF8String]);
CFDataRef address =
CFDataCreate(
kCFAllocatorDefault,
(UInt8*)&addr,
sizeof(addr));
CFSocketConnectToAddress(_socket,address,-1);
CFRunLoopRef cfrl =
CFRunLoopGetCurrent(); //
获取当前运行循环
CFRunLoopSourceRef source =
CFSocketCreateRunLoopSource(kCFAllocatorDefault,_socket,0);//定义循环对象
CFRunLoopAddSource(cfrl,source,kCFRunLoopCommonModes);
//将循环对象加入当前循环中
CFRelease(source);
}
static
void ServerConnectCallBack(
CFSocketRef socket,
CFSocketCallBackType type,
CFDataRef address,
const void *data,
void * info)
{
if(data != NULL)
{
NSLog(@"连接失败");//服务器那边已经提过,连接事件时该指针用于存放报错
}
else
{
NSLog(@"connect success");
}
}
-(void)ReadStream
{
char buffer[255];
while(recv(CFSocketGetNative(_socket),buffer,sizeof(buffer),0))
{
printf(buffer);
}
}- (void)viewDidLoad
{
[super
viewDidLoad];
[self
Connect];
// Do any additional setup after loading the view, typically from a nib.
}
相关文章推荐
- 使用Delphi自带的TUDPSocket收发数据
- IOS 开源库 asyncSocket 的使用心得
- iOS Socket使用大全
- IOS 使用域名进行Socket连接
- IOS 使用域名进行Socket连接
- iOS 使用socket 实现rtsp +rtp 协议
- iOS AsyncUdpSocket使用简介
- IOS Socket使用大全
- iOS自带表情图标,可用转义字符使用
- IOS Socket使用大全 -将持续更新
- IOS 开源库 asyncSocket 的使用心得
- ios使用自带git respository管理项目
- ios Socket使用大全
- iOS自带map的使用
- 【iOS-cocos2d-X 游戏开发之六】使用Base64算法对Cocos2dX自带CCUserDefault游戏存储数据编码!
- iOS Socket使用大全
- IOS 使用域名进行Socket连接
- IOS Socket使用大全 -将持续更新
- IOS Socket使用大全
- IOS Socket使用大全 .