iOS简单的Socket通讯

转载自socket;ios客户端与php服务端交互(补充html5+python服务端+ios客户端)

首先是服务端的搭建,Mac内置apache+php, 找下教程开启就可以了,非常方便

php Server:

<?php
set_time_limit(600);//设置10分钟的超时时间,避免资源浪费
$ip = '127.0.0.1';//配置服务端IP地址
$port = 9196;//服务端端口
if(($sock = socket_create(AF_INET,SOCK_STREAM,SOL_TCP)) < 0) {//建立一个套接字
    echo "socket_create() failed:".socket_strerror($sock)."\n";}
if(($ret = socket_bind($sock,$ip,$port)) < 0) {//为套接字设置IP和端口
    echo "socket_bind() failed:".socket_strerror($ret)."\n";}
if(($ret = socket_listen($sock,4)) < 0) {//监听端口
    echo "socket_listen() failed:".socket_strerror($ret)."\n";}
$count = 0;
do {
    if (($msgsock = socket_accept($sock)) < 0) {//等待并接受客户端连接
        echo "socket_accept() failed: reason: " . socket_strerror($msgsock) . "\n";
        break;}
else{//发送信息到客户端
        $msg ="Shura so good!\n";
        socket_write($msgsock, $msg, strlen($msg));
        echo "测试成功\n";
        $buf = socket_read($msgsock,9999);
        $talkback = "收到的信息:$buf\n";
        echo $talkback;
        if(++$count >= 5){break;};}//重试5次后,自动关闭套接字
    socket_close($msgsock);
} while (true);
socket_close($sock);//关闭套接字
?>

然后就是客户端的实现

本地做测试的话,我拿到本地的IP地址比如192.168.1.xxx , 连接在相同的网络下就可以进行通讯咯

iOS客户端代码, 使用第三方的cocoaAsyncSocket库(这里只是简单的通讯,连接成功打印一条信息,然后写一条到Server端)

#import "AsyncSocket.h"


@interface ViewController () <AsyncSocketDelegate>
{
    AsyncSocket *_asyncSocket;
}

@end

@implementation ViewController

- (void)viewDidLoad
{
    [super viewDidLoad];
    
    _asyncSocket = [[AsyncSocket alloc] initWithDelegate:self];
    NSError *err = nil;
    if (![_asyncSocket connectToHost:@"192.168.1.127" onPort:9196 error:&err]) {
        NSLog(@"Error:%@", err);
    }

}

- (void)onSocket:(AsyncSocket *)sock didConnectToHost:(NSString *)host port:(UInt16)port
{
    NSLog(@"onSocket:%p didConnectToHost:%@ port:%hu", sock, host, port);
    [sock readDataWithTimeout:1 tag:0];
}

- (void)onSocket:(AsyncSocket *)sock didReadData:(NSData *)data withTag:(long)tag
{
    NSString* aStr = [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding];
    NSLog(@"===%@",aStr);
    NSData* aData= [@"<xml>我喜欢你<xml>" dataUsingEncoding: NSUTF8StringEncoding];
    [sock writeData:aData withTimeout:-1 tag:1];
    [sock readDataWithTimeout:1 tag:0];
}

- (void)onSocket:(AsyncSocket *)sock didSecure:(BOOL)flag
{
    NSLog(@"onSocket:%p didSecure:YES", sock);
}

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

- (void)onSocketDidDisconnect:(AsyncSocket *)sock
{
    //断开连接了
    NSLog(@"onSocketDidDisconnect:%p", sock);
}



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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值