美文网首页
OC socket简单使用案例

OC socket简单使用案例

作者: 小刘_假装是个程序员 | 来源:发表于2018-01-18 10:36 被阅读0次
    //
    //  ViewController.m
    //  socket
    //
    //  Created by admin on 2018/1/18.
    //  Copyright © 2018年 admin. All rights reserved.
    //
    
    #import "ViewController.h"
    
    #import <sys/socket.h>
    #import <netinet/in.h>
    #import <arpa/inet.h>
    
    @interface ViewController ()
    
    @property (weak, nonatomic) IBOutlet UITextField *ipTextField;
    @property (weak, nonatomic) IBOutlet UITextField *portField;
    
    @property (weak, nonatomic) IBOutlet UIButton *connectBtn;
    @property (weak, nonatomic) IBOutlet UIButton *closeBtn;
    @property (weak, nonatomic) IBOutlet UIButton *sendBtn;
    @property (weak, nonatomic) IBOutlet UITextField *sendMsgField;
    @property (weak, nonatomic) IBOutlet UILabel *recvLabel;
    
    
    
    
    @property (nonatomic, assign) int clientSocket;
    
    @end
    
    @implementation ViewController
    
    - (void)viewDidLoad {
        [super viewDidLoad];
    }
    //点击连接按钮
    - (IBAction)connectBtnAction:(id)sender {
        [self connect:self.ipTextField.text port:[self.portField.text intValue]];
    }
    //点击发送按钮
    
    - (IBAction)sendBtnAction:(id)sender {
        self.recvLabel.text = [self sendAndRecv:self.sendMsgField.text];
        NSLog(@"完毕");
    }
    //点击关闭按钮
    
    - (IBAction)closeBtnAction:(id)sender {
        close(self.clientSocket);
        NSLog(@"连接关闭");
    }
    
    //1.连接服务器
    - (BOOL)connect:(NSString *)ip port:(int)port{
        //创建socket
        int clientSocket= socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);
        
        self.clientSocket = clientSocket;
        
        struct sockaddr_in addr;
        addr.sin_family = AF_INET;
        addr.sin_addr.s_addr = inet_addr(ip.UTF8String);
        addr.sin_port = htons(port);
        int result = connect(clientSocket, (const struct sockaddr *) &addr, sizeof(addr));
        if (result == 0) {
            return YES;
        }else{
            return NO;
        }
    }
    
    //1.发送和接受数据
    - (NSString *)sendAndRecv:(NSString *)sendMsg{
        //向服务器发送数据
        const char *msg = sendMsg.UTF8String;
        //成功发送返回发送的字节数, 失败返回-1
        ssize_t sendCount = send(self.clientSocket, msg, strlen(msg), 0);
        NSLog(@"发送的字节数%zd", sendCount);
        
        //接受服务器返回的数据
        //返回的是实际接受的字节个数
        uint8_t buffer[1024];
        ssize_t recvCount = recv(self.clientSocket, buffer, sizeof(buffer), 0);
        NSLog(@"接收的字节数%zd", recvCount);
        
        NSData *data = [NSData dataWithBytes:buffer length:recvCount];
        NSString *recvMsg = [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding];
        
        return recvMsg;
    }
    
    
    
    
    
    
    
    
    
    
    
    @end
    
    
    
    image.png

    相关文章

      网友评论

          本文标题:OC socket简单使用案例

          本文链接:https://www.haomeiwen.com/subject/kwvioxtx.html