Objective - c 서버

2529 단어
//
//  main.m
//     12-11
//
//  Created by dc004 on 15/12/11.
//  Copyright © 2015  gang. All rights reserved.
//

#import <Foundation/Foundation.h>
//  socket        
#include <sys/socket.h>
//      
#include <netinet/in.h>
//  IP      
#include <arpa/inet.h>
int main() {
   //     :socket->bind->listen->while(true) accept->do while recv ->close
    int fd = socket(AF_INET, SOCK_STREAM, 0);
    BOOL success = (fd != -1);
    struct sockaddr_in addr;
    int err;
    //       
    if (success) {
        NSLog(@"socket success");
        memset(&addr, 0, sizeof(addr));
        addr.sin_len = sizeof(addr);
        addr.sin_family = AF_INET;//IPv4
        addr.sin_port = htons(1024);
        addr.sin_addr.s_addr = INADDR_ANY;
        //    
        err = bind(fd, (const struct sockaddr*)&addr, sizeof(addr));
        success = (err == 0);
    }if (success) {
        NSLog(@"bind  ");
        //listen  
        //                   。   connect       ,                ,   accept  。        ,           ,           。
        err = listen(fd, 5);
        success = (err == 0);
    }if (success) {
        NSLog(@"listen success");
        while (true) {
            struct sockaddr_in clientaddr;
            //         ,              。
            int clientfd;
            //          ,        
            socklen_t addrLen;
            addrLen = sizeof(clientaddr);
            NSLog(@"    ");
            //accept  
            //                 
            //             
            clientfd = accept(fd, (struct sockaddr*)&clientaddr, &addrLen);
            success = (clientfd != -1);
            if (success) {
                char buf[1024];
                ssize_t count;//          
                size_t len = sizeof(buf);
                do{
                    //recv()                。
                    count = recv(clientfd, buf, len, 0);
                    if (count < 0) {
                        NSLog(@"  ");
                        break;
                    }
                    //  ( c        oc     )
                    NSString *str = [NSString stringWithCString:buf encoding:NSUTF8StringEncoding];
                    NSLog(@"%@",str);
                    
                    
                }while (strcmp(buf, "exit") != 0);
            }
            //     :            TCP  
            close(clientfd);
        }
    }
    
    return 0;
}

좋은 웹페이지 즐겨찾기