文章来源:淘论文网   发布者: 毕业设计   浏览量: 37



还可以点击去查询以下关键词:
[cocoaAsynSocket]    [定制]    [包含]    [客户端]    [服务]    [cocoaAsynSocket demo 定制(包含客户端和服务端)]   

项目介绍:

gitHub 地址:https://github.com/lc081200/cocoaAsynSocketExample
博客地址:

<div>源码实现很简单:</div>

客户端:

#import 'ViewController.h'

#import 'GCDAsyncSocket.h'


@interface ViewController ()

@property (weak, nonatomic) IBOutlet UITextField *ipField;

@property (weak, nonatomic) IBOutlet UITextField *portField;

@property (weak, nonatomic) IBOutlet UITextField *sendMsgField;

@property (weak, nonatomic) IBOutlet UITextView *reciveMsgTextView;



//客户端socket

@property (nonatomic) GCDAsyncSocket *clientSocket;


@end


@implementation ViewController



- (void)viewDidLoad {

    [super viewDidLoad];

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

   

    //1、初始化

    self.ipField.text = @'172.16.1.6';

    self.clientSocket = [[GCDAsyncSocket alloc] initWithDelegate:self delegateQueue:dispatch_get_main_queue()];

}


- (void)didReceiveMemoryWarning {

    [super didReceiveMemoryWarning];

    // Dispose of any resources that can be recreated.

}


- (IBAction)linkButtonAction:(id)sender {

    //连接服务器

    [self.clientSocket connectToHost:self.ipField.text onPort:self.portField.text.integerValue withTimeout:-1 error:nil];

}

- (IBAction)sendMsgButtonAction:(id)sender {

    NSData *data = [self.sendMsgField.text dataUsingEncoding:NSUTF8StringEncoding];

    //withTimeout -1 :无穷大

    //tag: 消息标记

    [self.clientSocket writeData:data withTimeout:-1 tag:0];

}


- (void)showMessageWithText:(NSString *)text {

    self.reciveMsgTextView.text = [self.reciveMsgTextView.text stringByAppendingFormat:@'%@\n', text];

}


#pragma mark - GCDAsynSocket Delegate

- (void)socket:(GCDAsyncSocket *)sock didConnectToHost:(NSString *)host port:(uint16_t)port{

    [self showMessageWithText:@'链接成功'];

    [self showMessageWithText:[NSString stringWithFormat:@'服务器IP : %@', host]];

    [self.clientSocket readDataWithTimeout:-1 tag:0];

}


//收到消息

- (void)socket:(GCDAsyncSocket *)sock didReadData:(NSData *)data withTag:(long)tag{

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

    [self showMessageWithText:text];

    [self.clientSocket readDataWithTimeout:-1 tag:0];

}


- (void)touchesBegan:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event{

    [self.view endEditing:YES];

}


@end

复制代码

服务端:

#import 'ViewController.h'

#import 'GCDAsyncSocket.h'


@interface ViewController ()<GCDAsyncSocketDelegate>


/** 端口号 **/

@property (weak, nonatomic) IBOutlet UITextField *portField;


/** 发送消息 **/

@property (weak, nonatomic) IBOutlet UITextField *sendMsgField;


/** 连接端口号按钮 **/

@property (weak, nonatomic) IBOutlet UIButton *linkPortButton;


/** 发送消息按钮 **/

@property (weak, nonatomic) IBOutlet UIButton *sendMsgButton;


/** 接受消息 **/

@property (weak, nonatomic) IBOutlet UITextView *reciveMsgTextView;




//服务器socket(开放端口,开题报告,监听客户端socket的链接)

@property (nonatomic) GCDAsyncSocket *serverSocket;


//保护客户端socket

@property (nonatomic) GCDAsyncSocket *clientSocket;


@end


@implementation ViewController


- (void)viewDidLoad {

    [super viewDidLoad];

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

   

    //初始化服务器socket

    self.serverSocket = [[GCDAsyncSocket alloc] initWithDelegate:self delegateQueue:dispatch_get_main_queue()];

}

- (void)didReceiveMemoryWarning {

    [super didReceiveMemoryWarning];

    // Dispose of any resources that can be recreated.

   


}


/** 连接端口 **/

- (IBAction)linkPortButtonAction:(id)sender {

    NSError *error = nil;

    BOOL result = [self.serverSocket acceptOnPort:self.portField.text.integerValue error:&error];

    if (result && error == nil) {

        //开放成功

        [self showMessageWithText:@'连接成功'];

    }

}



/** 发消息 **/

- (IBAction)sendMsgButtonAction:(id)sender {

    NSData *data = [self.sendMsgField.text dataUsingEncoding:NSUTF8StringEncoding];

    //withTimeout -1:  一直等

    //tag:消息标记

    [self.clientSocket writeData:data withTimeout:-1 tag:0];

}


- (void)showMessageWithText:(NSString *)text {

    self.reciveMsgTextView.text = [self.reciveMsgTextView.text stringByAppendingFormat:@'%@\n',text];

}


#pragma mark - 服务器socket Delegate

- (void)socket:(GCDAsyncSocket *)sock didAcceptNewSocket:(GCDAsyncSocket *)newSocket{

    //保存客户端的socket

    self.clientSocket = newSocket;

    [self showMessageWithText:@'链接成功'];

   

    [self showMessageWithText:[NSString stringWithFormat:@'服务器地址:%@ -端口: %d', newSocket.connectedHost, newSocket.connectedPort]];

    [self.clientSocket readDataWithTimeout:-1 tag:0];

}


//收到消息

- (void)socket:(GCDAsyncSocket *)sock didReadData:(NSData *)data withTag:(long)tag{

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

    [self showMessageWithText:text];

    [self.clientSocket readDataWithTimeout:-1 tag:0];

}



@end

论文

这里还有:


还可以点击去查询:
[cocoaAsynSocket]    [定制]    [包含]    [客户端]    [服务]    [cocoaAsynSocket demo 定制(包含客户端和服务端)]   

请扫码加微信 微信号:sj52abcd


下载地址: http://www.taolw.com/down/3973.docx
  • 上一篇:横向滚动多个毕业设计 ViewController
  • 下一篇:YHPhotoBrowser 优化的网络图片浏览