IOS socket 客户端例子
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 句柄。
}
相关推荐:
- [教育文库]夜场KTV服务员的岗位职责及工作流程[1]
- [教育文库]企划、网络、市场绩效考核方案
- [教育文库]学党史、知党情、强党性--“党的基本理
- [教育文库]2016年高考物理大一轮总复习(江苏专版
- [教育文库]干部廉洁自律自查自纠的报告
- [教育文库]2010年北京大学心理学系拟录取硕士研究
- [教育文库]资金时间价值练习题及答案
- [教育文库]保护环境的心得体会
- [教育文库]英语角内容:英语趣味小知识
- [教育文库]档案收集与管理工作通知
- [教育文库]劳动规章制度范本范本
- [教育文库]高考物理一轮复习课后限时作业1运动的
- [教育文库]机械工艺夹具毕业设计195推动架设计说
- [教育文库]通用技术教学比赛说课稿2
- [教育文库]2018年四年级英语下册 Module 7 Unit 2
- [教育文库]第2章 宽带IP网络的体系结构
- [教育文库]九年级化学第五单元课题3《根据化学方
- [教育文库]小学英语六年级情态动词用法归纳
- [教育文库]甲级单位编制窑井盖项目可行性报告(立
- [教育文库]2016-2021年中国城市规划行业全景调研
- 高考英语听力十大场景词汇总结
- 全省领导班子思想政治建设座谈会会议精
- 人教版新课标高一英语提优竞赛试题 下
- 江西省2014年生物中考试题
- 长沙镇食品药品安全事故应急预案
- 《金刚石、石墨和C60》片段教学设计
- 福州教育学院(王旭东)
- 基于EDA音乐播放器的设计
- 9、古诗两首《夜书所见》《九月九日忆
- 小学语文课外阅读有效策略探讨
- 贵州文化产业发展成支柱产业的问卷调查
- 膀胱类癌的诊治体会(附3例报告)
- 发动机积碳产生的原因
- Configuring Code Composer Studio for
- 学生良好的心理素质如何培养点滴谈
- 46 电沉积法制备锂离子电池用硅-锂薄膜
- 美舍雅阁公司管理中各部门职责
- 去壳剥皮的小妙招
- 六自由度运动平台的仿真研究
- Pride and Prejudice(傲慢与偏见)




