Objective - c 클 라 이언 트

3059 단어
//
//  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->connect->send->close
    
    //       
    //   : IP     IP                   。             。
    //int socket(int domain, int type, int protocol);
    //domain:   ,     AF_INET  
    //type:       。SOCK_STREAM  (TCP),SOCK_DGRAM    (UDP)
    //protocol:       。     ,  0  
    int fd = socket(AF_INET, SOCK_STREAM, 0);
    //     -1,      。
    BOOL success = (fd != -1);
    //sockaddr_in               
    struct sockaddr_in addr;
    //      ,            
    int err;
    if (success) {
        NSLog(@"socket success");
        //     
        //sizeof:         
        memset(&addr, 0, sizeof(addr));
        // addr       
//        addr.sin_len = sizeof(addr);
        //AF_INET  IPv4    
        addr.sin_family = AF_INET;
        //      
        //INADDR_ANY     0.0.0.0   。         ,      “    ”。
        addr.sin_addr.s_addr = INADDR_ANY;
        // socket               ,       0,   -1.
        err = bind(fd, (const struct sockaddr*)&addr, sizeof(addr));
        success = (err == 0);//if(err==0){success = true;}
        
    }if (success) {
        NSLog(@"bind success");
        //           
        struct sockaddr_in serveraddr;
        //     
        memset(&serveraddr, 0, sizeof(serveraddr));
        //     (host to net shot)
        serveraddr.sin_port = htons(1024);//                   
        serveraddr.sin_len = sizeof(serveraddr);
        serveraddr.sin_family = AF_INET;
        //       
        serveraddr.sin_addr.s_addr = inet_addr("127.0.0.1");//       ,        。
        NSLog(@"  ing");
        //             ,      0,    -1.
        err = connect(fd, (const struct sockaddr*)&serveraddr, sizeof(serveraddr));
        success = (err == 0);
        socklen_t addrLen = sizeof(serveraddr);//       
        if (success) {
            NSLog(@"    ");
            getsockname(fd, (struct sockaddr *)&addr, &addrLen);
            success = (err == 0);
            if (success) {
                //inet_ntoa:   IP                
                //ntohs:                
                NSLog(@"    :%s,   :%d",inet_ntoa(addr.sin_addr),ntohs(addr.sin_port));
                //    
                char buf[1024];
                do{
                    printf("     :");
                    //puts  scanf,       
//                    puts(buf);
                    scanf("%s",buf);
                    send(fd, buf, 1024, 0);
                }while (strcmp(buf, "exit") != 0);//   exit    ,  
                    
            }
        }else{
            
            NSLog(@"connect   ");
        }
        
    }
    
    
    
    return 0;
}

좋은 웹페이지 즐겨찾기