ios 一个简单的socket通信例子:

服务器端:

#import <Foundation/Foundation.h>
#import <sys/socket.h>
#import <netinet/in.h>


int main(int argc, const char * argv[]) {
    @autoreleasepool {
        // insert code here...
        NSLog(@"Hello, World!");
        
        int serverFD = socket(AF_INET, SOCK_STREAM, 0);
        if (serverFD<0) {
            NSLog(@"error socket ");
        }
        
        struct sockaddr_in sockIPcon;
        sockIPcon.sin_len = sizeof(sockIPcon);
        sockIPcon.sin_family = AF_INET;
        sockIPcon.sin_port = htons(5200);
        sockIPcon.sin_addr.s_addr = htonl(INADDR_ANY);
        
        if (bind(serverFD, (struct sockaddr*)&sockIPcon, sizeof(sockIPcon))<0) {
            NSLog(@"error bind ");
        }
        
        if (listen(serverFD, 1024)<0) {
            NSLog(@"error listen ");
        }
        
        long idataNum;
        
        char buffer[4];
        
        struct sockaddr_in clentIPcon;
        int clientSocket;
        
        
        while (YES) {
            
            clientSocket = accept(serverFD, (struct sockaddr *)&clentIPcon, (socklen_t *)&clentIPcon);
            
            if (clientSocket<0) {
                NSLog(@"error clientSocket ");
            }
            
            idataNum = recv(clientSocket, buffer, sizeof(buffer), 0);
            if (idataNum < 0) {
                NSLog(@"error recv ");
            }
             NSLog(@"idata %ld",idataNum);
            if (idataNum == 4) {
                idataNum = recv(clientSocket, buffer, sizeof(buffer), 0);
                if (idataNum < 0) {
                    NSLog(@"error recv ");
                }
                printf("second length: %ld second recv data is %s\n", idataNum, buffer);
            }
            
            
            buffer[idataNum] = '\0';
            if (strcmp(buffer, "quit") == 0) {
                break;
                
            }
            char sendbuf[200] = "quit";
            
            printf("%ldrecv data is %s\n", idataNum, sendbuf);
            send(clientSocket, sendbuf, strlen(sendbuf), 0);
            
            
            
        }
        
        
        
        
        
        
        
    }
    return 0;
}



客户端:

#import <Foundation/Foundation.h>
#import <sys/socket.h>
#import <netinet/in.h>
#import <arpa/inet.h>

int main(int argc, const char * argv[]) {
    @autoreleasepool {
        // insert code here...
        NSLog(@"Hello, World!");
        
        
        int clinetsocker ;
        struct sockaddr_in serverAddr;
        char sendbuf[200] = "1";
        char recvbuf[200] ;
        if ((clinetsocker = socket(AF_INET, SOCK_STREAM, 0))<0) {
            NSLog(@"socket error");
        }
        
        serverAddr.sin_family = AF_INET;
        serverAddr.sin_len = sizeof(serverAddr);
        serverAddr.sin_port = htons(5200);
        serverAddr.sin_addr.s_addr = inet_addr("127.0.0.1");
        
        if (connect(clinetsocker, (struct sockaddr *)&serverAddr, sizeof(serverAddr))<0) {
            printf("connect error");
        }
        
        long idataNum;
        
        
        while (YES) {
            send(clinetsocker, sendbuf, strlen(sendbuf), 0);
            if (strcmp(sendbuf, "quit")==0) {
                break;
            }
            idataNum = recv(clinetsocker, recvbuf, 200, 0);
//            recvbuf[idataNum] = '\0';
            printf("recv %s  length:%d  idata:%d",recvbuf,strlen(recvbuf),idataNum);
        }
        
        
        
        
        
        
    }
    return 0;
}




代码比较简单

猜你喜欢

转载自blog.csdn.net/a787188834/article/details/80334677
今日推荐