教学文库网 - 权威文档分享云平台
您的当前位置:首页 > 文库大全 > 教育文库 >

IOS socket 客户端例子

来源:网络收集 时间:2026-08-26
导读: IOS socket 客户端例子 #import Foundation/Foundation.h #import TargetConditionals.h #import sys/socket.h #import netinet/in.h #import arpa/inet.h #import netdb.h #import CFNetwork/CFNetwork.h - (BOOL)ConnectToServer:(NSString*)addr port:(in

IOS socket 客户端例子



#import <Foundation/Foundation.h>

#import <TargetConditionals.h>
#import <sys/socket.h>
#import <netinet/in.h>
#import <arpa/inet.h>
#import <netdb.h>


#import <CFNetwork/CFNetwork.h>




- (BOOL)ConnectToServer:(NSString*)addr port:(int)port
{
BOOL misConnect=false;

int s=socket(AF_INET, SOCK_STREAM, 0);
struct sockaddr_in adr;
memset( &adr, 0, sizeof( adr ) );

adr.sin_family = AF_INET;

adr.sin_addr.s_addr = inet_addr([addr UTF8String]);

adr.sin_port = htons(port);

//***************************************************/

//在connect之前,设成非阻塞模式
int flags = fcntl(s, F_GETFL,0);
fcntl(s,F_SETFL, flags | O_NONBLOCK);

//**************************************************

int conn = connect(s, (struct sockaddr*)&adr, sizeof(struct sockaddr));

NSLog(@"Connect ret is %d:",conn);


//****************************************************/

// 设置connect后可以设置用select设置超时

//***************************************************

//设置超时

fd_set fdwrite;

struct timeval tvSelect;



FD_ZERO(&fdwrite);

FD_SET(s, &fdwrite);

http://doc.guandang.net_sec = 2;//连接超时 2秒

http://doc.guandang.net_usec = 0;

int retval = select(s + 1,NULL, &fdwrite, NULL, &tvSelect);

if(retval < 0)
{
NSLog(@"select error");

close(s);
}
else if(retval == 0)
{
NSLog(@"select timeout........");
}
else if(retval > 0)
{
misConnect = YES;
}

/***************************************************/

//在connect成功之后,设成阻塞模式

flags = fcntl(s, F_GETFL,0);
flags &= ~ O_NONBLOCK;
fcntl(s,F_SETFL, flags);

//***************************************************

//设置不被SIGPIPE信号中断,物理链路损坏时才不会导致程序直接被Terminate

//在网络异常的时候如果程序收到SIGPIRE是会直接被退出的。

struct sigaction sa;
sa.sa_handler = SIG_IGN;
sigaction( SIGPIPE, &sa, 0 );

//***************************************************

//
if ( misConnect ) {
return s;
}

return -1;

}

- (NSString *)getTimeNow
{
NSString* date;
NSString* timeNow;
NSDateFormatter * formatter = [[NSDateFormatter alloc ] init];
//[formatter setDateFormat:@"YYYY.MM.dd.hh.mm.ss"];
[formatter setDateFormat:@"YYYY-MM-dd hh:mm:ss:SSS"];
date = [formatter stringFromDate:[NSDate date]];
timeNow = [[NSString
alloc] initWithFormat:@"%@", date];
NSLog(@"%@", timeNow);
return timeNow;
}

- (IBAction)onclick:(id)sender {
// UIA

IOS socket 客户端例子

lertView *helloWorldAlert = [[UIAlertView alloc]

// initWithTitle:@"aaaa" message:@"bbbb" delegate:nil cancelButtonTitle:@"cccc." otherButtonTitles:nil];


//[helloWorldAlert show];

// [self.lb1 setText:@"bbbba"];
// lb1.text=@"<#string#>";
// [lb1 setNeedsDisplay];
lb1.text = self.getTimeNow ; //[NSString stringWithFormat: @"%d", 23];
//btn1.set=@"aaaa";

/* Right way */
// [btn1 setTitle:@"SampleText" forState:UIControlStateNormal];

//连接目标
int s= [self ConnectToServer:@"192.168.1.10
" port:123];
// NSLog(@"sock ", timeNow);
lb1.text = [NSString stringWithFormat: @"%d", s]; //显示sock 句柄。

}

…… 此处隐藏:762字,全部文档内容请下载后查看。喜欢就下载吧 ……
IOS socket 客户端例子.doc 将本文的Word文档下载到电脑,方便复制、编辑、收藏和打印
本文链接:https://www.jiaowen.net/wenku/1810837.html(转载请注明文章来源)
Copyright © 2020-2025 教文网 版权所有
声明 :本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。
客服QQ:78024566 邮箱:78024566@qq.com
苏ICP备19068818号-2
Top
× 游客快捷下载通道(下载后可以自由复制和排版)
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
注:下载文档有可能出现无法下载或内容有问题,请联系客服协助您处理。
× 常见问题(客服时间:周一到周五 9:30-18:00)