ios socket通信的问题

mmorss mmorss 墨衍会员 · AI 创作全网分发 墨衍智能分发 通过墨衍一键同步至各平台 可同步平台 CSDN微信公众号微博知乎掘金百家号博客园抖音小红书 你的文章也可以这样分发 墨衍会员 ¥399起/年,写一次发全网 我也要 + 加入社区
我用cocaAsySocket 或者其它工具,做socket通信,每次都是socket断开连接时,服务端才能收到ios模拟器发的消息,好像不断开连接消息就堵住了一样,是我的代码有问题吗,还是因为用的模拟器的原因,我用安卓手机做为服务器来接收消息,电脑开着xcode 和android studio
引用
- (void)viewDidLoad {
//[super viewDidLoad];
[self getIPAddress:true];
if([self connectServer:HOST_IP port:HOST_PORT]==1){

}
UIButton *btn=[self addButton:@"发送" withx:110 withy:130 withWidth:200 withTag:1];
[self.view addSubview:btn ];
UIButton *btn1=[self addButton:@"断开" withx:0 withy:60 withWidth:200 withTag:0];
[self.view addSubview:btn1 ];

UIButton *btn2=[self addButton:@"连接" withx:0 withy:95 withWidth:200 withTag:2];
[self.view addSubview:btn2 ];
// 监听读取
}


//事件方法
- (void)handleSingleTap:(UIGestureRecognizer *)gestureRecognizer
{
//事件处理。
NSString *str=[NSString stringWithFormat:@"%ld",gestureRecognizer.view.tag];
NSLog(@"点击了%@",str) ;
switch (gestureRecognizer.view.tag) {
case 0:
[client disconnect];
break;
case 1:
[self sendMsg];
break;

case 2:
[self connectServer:HOST_IP port:HOST_PORT];
break;
case 3:

break;

default:
break;
}

}

// Override to allow orientations other than the default portrait orientation.
- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation {
return YES;
}



- (void)viewDidUnload {
client = nil;
// Release any retained subviews of the main view.
// e.g. self.myOutlet = nil;
}

- (int)connectServer:(NSString *)hostIP port:(int)hostPort
{
if (client == nil)
{
client = [[AsyncSocket alloc] initWithDelegate:self];
NSError *err = nil;
//192.168.110.128
if (![client connectToHost:hostIP onPort:hostPort error:&err])
{
NSLog(@"%@ %@", [err code], [err localizedDescription]);

UIAlertView *alert = [[UIAlertView alloc] initWithTitle:[@"Connection failed to host "
stringByAppendingString:hostIP]
message:[[[NSString alloc]initWithFormat:@"%@",[err code]] stringByAppendingString:[err localizedDescription]]
delegate:self
cancelButtonTitle:@"OK"
otherButtonTitles:nil];
[alert show];
// [alert release];
//client = nil;
return SRV_CONNECT_FAIL;
}
else
{
NSLog(@"Conectou!");
return SRV_CONNECT_SUC;
}
}
else
{
[client readDataWithTimeout:-1 tag:0];
return SRV_CONNECTED;
}

}

- (void)reConnect
{
int stat = [self connectServer:HOST_IP port:HOST_PORT];
switch (stat)
{
case SRV_CONNECT_SUC:[self showMessage:@"connect success"];break;
case SRV_CONNECTED:[self showMessage:@"It's connected,don't agian"];break;
default:break;
}
}

- (void)sendMsg
{
// NSString *inputMsgStr = self.inputMsg.text;
NSString * content = @"ok";
NSLog(@"%@",content);
NSData *data = [content dataUsingEncoding:NSISOLatin1StringEncoding];
[client writeData:data withTimeout:-1 tag:0];

//[data release];
//[content release];
//[inputMsgStr release];
//继续监听读取
[client readDataWithTimeout:-1 tag:0];
}

#pragma mark -
#pragma mark close Keyboard
- (void)textFieldDoneEditing:(id)sender
{
[sender resignFirstResponder];
}

- (void)backgroundTouch:(id)sender
{
[inputMsg resignFirstResponder];
}

#pragma mark socket uitl

- (void)showMessage:(NSString *)msg
{
UIAlertView * alert = [[UIAlertView alloc]initWithTitle:@"Alert!"
message:msg
delegate:nil
cancelButtonTitle:@"OK"
otherButtonTitles:nil];
[alert show];
// [alert release];
}


#pragma mark socket delegate

- (void)onSocket:(AsyncSocket *)sock didConnectToHost:(NSString *)host port:(UInt16)port
{
[client readDataWithTimeout:-1 tag:0];
NSLog(@"连接成功");
}

- (void)onSocket:(AsyncSocket *)sock willDisconnectWithError:(NSError *)err
{
NSLog(@"Error");
}

- (void)onSocketDidDisconnect:(AsyncSocket *)sock
{
NSString *msg = @"Sorry this connect is failure";
[self showMessage:msg];
// [msg release];
client = nil;
NSLog(@"断开");
}

- (void)onSocketDidSecure:(AsyncSocket *)sock
{

}

- (void)onSocket:(AsyncSocket *)sock didReadData:(NSData *)data withTag:(long)tag
{
NSString* aStr = [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding];
NSLog(@"Hava received datas is :%@",aStr);
// self.outputMsg.text = aStr;
// [aStr release];
[client readDataWithTimeout:-1 tag:0];
}



...全文
评论 5
收藏 已收藏
分享
返回顶部
mmorss
iOS 29,038 成员 12,459 内容