socket和PHP后台数据通信

PHP后台代码

<?php

    set_time_limit(0);

    $address='127.0.0.1';

    $port=8080;

    if(($sock=socket_create(AF_INET,SOCK_STREAM,SOL_TCP))<0){

        echo 'error';

    }

    socket_set_option($sock, SOL_SOCKET, SO_REUSEADDR,1);

    

    if(($ret=socket_bind($sock,$address, $port))<0){

        echo 'error';

    }

    if(($ret=socket_listen($sock,4))<0){

        echo 'error';

    }

    do {

        if (($msgsock = socket_accept($sock)) < 0) {

            echo 'error';

            break;

        }

        

        $buf = socket_read($msgsock, 8192);

        $talkback = "我收到了你的消息【 $buf <br>";

        $msg ="<font color=red>".$talkback."</font><br>";

        socket_write($msgsock, $msg, strlen($msg));

        socket_close($msgsock);

        

    } while (true);

    socket_close($sock);

    ?>


IOS前端代码


//

//  ViewController.m

//  SocketDemo10-13

//

//  Created by chang on 14-10-13.

//  Copyright (c) 2014 chang. All rights reserved.

//


#import "ViewController.h"



@interface ViewController ()

{

    NSData *_sendData;//发送数据

}

@end


#define PORT 8080

#define HOST @"127.0.0.1"

@implementation ViewController


- (void)viewDidLoad {

    [super viewDidLoad];

    // Do any additional setup after loading the view, typically from a nib.

    self.view.backgroundColor = [UIColor whiteColor];

    self.title = @"SocketDemo";

    


    NSDictionary *dataDic = @{@"action":@"updatename",@"nameID":@"10001",@"newname":@"csg"};

 //   NSDictionary *dataDic = @{@"action":@"forgetName",@"nameID":@"10001"};

    NSMutableString *sendStr = [[NSMutableString alloc] init];

    NSArray *keys = [dataDic allKeys];

    [sendStr appendFormat:@"%@=%@", [keys objectAtIndex:0], [dataDic objectForKey:[keys objectAtIndex:0]]];

    if ([keys count] > 1) {

        for (int i = 1; i < [keys count]; i++) {

            NSString *key = [keys objectAtIndex:i];

            NSString *value = [dataDic objectForKey:key];

            [sendStr appendFormat:@"&%@=%@", key, value];

        }

    }

    NSLog(@"urlstr = %@", sendStr);

    _sendData = [[sendStr dataUsingEncoding:NSUTF8StringEncoding] retain];

    

 //   [self startUrlRequest];//普通URl请求

      [self startSocket];//socket请求

    

}

- (void)startSocket

{

    _asyncSocket = [[AsyncSocket alloc] initWithDelegate:self];

    NSError *err = nil;

    if (![_asyncSocket connectToHost:HOST onPort:PORT error:&err]) {

        NSLog(@"err--------->%@", err);

    }

}

- (void)startUrlRequest

{

    NSURL *url = [NSURL URLWithString:@"http://1.fengyecsg1.sinaapp.com/action.php"];

    NSMutableURLRequest *request = [[NSMutableURLRequest alloc] initWithURL:url cachePolicy:NSURLRequestUseProtocolCachePolicy timeoutInterval:10];

    [request setHTTPMethod:@"POST"];

    //将字符串转换成数据

    request.HTTPBody = _sendData;

    NSOperationQueue *queue = [[NSOperationQueue alloc] init];

    [NSURLConnection sendAsynchronousRequest:request queue:queue completionHandler:^(NSURLResponse *response, NSData *data, NSError *connectionError) {

        NSDictionary *dic = [NSJSONSerialization JSONObjectWithData:data options:NSJSONReadingMutableContainers error:nil];

        NSLog(@"dic-------%@", dic);

    }];


}

- (void)onSocket:(AsyncSocket *)sock willDisconnectWithError:(NSError *)err

{

    NSLog(@"willDisconnectWithError");

}

- (void)onSocketDidDisconnect:(AsyncSocket *)sock

{

   

    NSLog(@"DidDisconnect-----sorry the connect is failure %ld",sock.userData);

//    if () {

//        // 服务器掉线,重连

//       

//    }

//    else if () {

//        // 如果由用户断开,不进行重连

//        return;

//    }

}

- (void)onSocket:(AsyncSocket *)sock didAcceptNewSocket:(AsyncSocket *)newSocket

{

  NSLog(@"didAcceptNewSocket");

}

- (BOOL)onSocketWillConnect:(AsyncSocket *)sock

{

    return YES;

}

- (void)onSocket:(AsyncSocket *)sock didConnectToHost:(NSString *)host port:(UInt16)port

{

 

    NSLog(@"1------didConnectToHost---onScoket:%p did connecte to host:%@ on port:%d",sock,host,port);

    

    [sock writeData:_sendData withTimeout:2 tag:3];//写数据

    [sock readDataWithTimeout:2 tag:3];

}

- (void)onSocket:(AsyncSocket *)sock didWriteDataWithTag:(long)tag

{

    NSLog(@"didWriteDataWithTag     %ld", tag);

    [sock readDataWithTimeout:2 tag:3];

    

}

- (void)onSocket:(AsyncSocket *)sock didReadData:(NSData *)data withTag:(long)tag

{

   

    NSString *aStr=[[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding];

    NSLog(@"2-------didReadData-----%ld----aStr=======%@",tag,aStr);


}

//判断进度

- (void)onSocket:(AsyncSocket *)sock didReadPartialDataOfLength:(NSUInteger)partialLength tag:(long)tag

{

    NSLog(@"didReadPartialDataOfLength");

}


- (void)onSocket:(AsyncSocket *)sock didWritePartialDataOfLength:(NSUInteger)partialLength tag:(long)tag

{

    NSLog(@"didWritePartialDataOfLength");

}


- (void)onSocketDidSecure:(AsyncSocket *)sock

{

    NSLog(@"onSocketDidSecure");

}

//- (NSTimeInterval)onSocket:(AsyncSocket *)sock

//  shouldTimeoutReadWithTag:(long)tag

//                   elapsed:(NSTimeInterval)elapsed

//                 bytesDone:(NSUInteger)length

//{

//    return 1.0;

//}

- (void)didReceiveMemoryWarning {

    [super didReceiveMemoryWarning];

    // Dispose of any resources that can be recreated.

}


@end



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值