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